# CMakeLists.txt # Written by JackCarterSmith, 2024 # This file is released under the ProtoTank license. cmake_minimum_required(VERSION 3.23) cmake_policy(VERSION 3.23) if(NOT DEFINED PROJECT_BINARY_DIR) set(PROJECT_BINARY_DIR ".") endif() if(NOT MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall") endif() set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) # define project project(ProtoTank VERSION 0.1.0 DESCRIPTION "Arcade 80s-style game with tanks" LANGUAGES C;CXX) #configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/config.h @ONLY) include(FindPkgConfig) include(CheckIncludeFile) include(CheckCSourceCompiles) # Find libraries find_package(SFML REQUIRED) include_directories(sfml::sfml) # define src/headers files groups include(srcs.list) # targets declarations add_executable(${PROJECT_NAME} ${MAIN_SCRS} ${UTILS_SCRS} ${MISC_SCRS} ${GAME_SCRS} ${GRAPHS_SCRS} ${SOUNDS_SCRS}) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME}-v${PROJECT_VERSION}) if(MSVC) # msvc does not append 'lib' - do it here to have consistent name set_target_properties(AST PROPERTIES IMPORT_PREFIX "lib") endif() target_link_libraries(${PROJECT_NAME} sfml::sfml)