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})