47 lines
1.5 KiB
CMake
47 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
# Set C++ standard
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
# Find the SFML package
|
|
if (DEFINED ENV{VCPKG_ROOT})
|
|
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
|
|
set(VCPKG_ROOT "$ENV{VCPKG_ROOT}")
|
|
elseif(DEFINED VCPKG_ROOT)
|
|
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
|
|
else()
|
|
message(FATAL_ERROR "VCPKG_ROOT environment variable not set. Please set it to the root directory of your vcpkg installation.")
|
|
endif()
|
|
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${VCPKG_ROOT}/buildtrees/sfml/src/SFML-2.4.2/cmake/Modules")
|
|
set(VCPKG_MANIFEST_MODE ON)
|
|
|
|
project(TetrisProject)
|
|
find_package(SFML 2.4.2 REQUIRED COMPONENTS system window graphics)
|
|
|
|
# Include directories
|
|
include_directories(${CMAKE_SOURCE_DIR} ${SFML_INCLUDE_DIR})
|
|
|
|
# Add the executable
|
|
file(GLOB SRCS
|
|
Domain/*.cpp
|
|
Logic/*.cpp
|
|
Utils/*.cpp
|
|
*.cpp)
|
|
|
|
add_executable(TetrisProject ${SRCS})
|
|
|
|
# Link SFML libraries
|
|
target_link_libraries(TetrisProject PRIVATE ${SFML_LIBRARIES})
|
|
|
|
if (WIN32)
|
|
# /ENTRY:mainCRTStartup keeps the same "main" function instead of requiring "WinMain"
|
|
set(SUBSYSTEM_LINKER_OPTIONS "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup")
|
|
else()
|
|
set(SUBSYSTEM_LINKER_OPTIONS "-mwindows")
|
|
endif()
|
|
target_link_options(TetrisProject PRIVATE ${SUBSYSTEM_LINKER_OPTIONS})
|
|
|
|
# Copy Assets directory to the output directory
|
|
file(COPY Assets DESTINATION ${CMAKE_BINARY_DIR})
|