46 lines
1.5 KiB
CMake
46 lines
1.5 KiB
CMake
# 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) |