somestrategiegame/CMakeLists.txt
2026-03-16 11:55:10 +01:00

58 lines
1.4 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(StrategyGame LANGUAGES CXX)
# C++ Standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
# Output directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# Find SFML
find_package(SFML 3 COMPONENTS Graphics Window System Network REQUIRED)
# Source files
set(SOURCES
src/main.cpp
)
# Create executable
add_executable(${PROJECT_NAME} ${SOURCES})
# Link SFML
target_link_libraries(${PROJECT_NAME} PRIVATE
SFML::Graphics
SFML::Window
SFML::System
SFML::Network
)
# Windows specific: Copy DLLs to output directory
if(WIN32)
# Copy SFML DLLs after build
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:SFML::Graphics>
$<TARGET_FILE:SFML::Window>
$<TARGET_FILE:SFML::System>
$<TARGET_FILE:SFML::Network>
$<TARGET_FILE_DIR:${PROJECT_NAME}>
)
endif()
# Enable more warnings
if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /W4)
else()
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -pedantic)
endif()
# Print build info
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "C++ standard: ${CMAKE_CXX_STANDARD}")
message(STATUS "SFML version: ${SFML_VERSION}")