51 lines
1.7 KiB
CMake
51 lines
1.7 KiB
CMake
# CMakeList.txt : Top-level CMake project file, do global configuration
|
|
# and include sub-projects here.
|
|
#
|
|
cmake_minimum_required (VERSION 3.16)
|
|
|
|
get_filename_component(PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
|
string(REPLACE " " "_" PROJECT_DIR ${PROJECT_DIR})
|
|
project(${PROJECT_DIR} LANGUAGES C CXX)
|
|
|
|
set(PROJECT_VERSION_MAJOR 0)
|
|
set(PROJECT_VERSION_MINOR 1)
|
|
set(PROJECT_VERSION_PATCH 0)
|
|
set(PROJECT_VERSION_BRANCH "N/A")
|
|
set(PROJECT_VERSION_COMMIT "N/A")
|
|
|
|
# Get the current working branch
|
|
execute_process(
|
|
COMMAND git rev-parse --abbrev-ref HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE PROJECT_VERSION_BRANCH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
# Get the latest commit hash
|
|
execute_process(
|
|
COMMAND git rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE PROJECT_VERSION_COMMIT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
|
|
set(PROJECT_VERSION_FULL ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-${PROJECT_VERSION_BRANCH}-${PROJECT_VERSION_COMMIT})
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/lib)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/lib)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/bin)
|
|
|
|
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install)
|
|
|
|
set(CMAKE_CACHEFILE_DIR ${CMAKE_SOURCE_DIR}/build)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(INCLUDE_BASE_DIR ${PROJECT_SOURCE_DIR}/src)
|
|
|
|
option(BUILD_SERVER "Build ${PROJECT_DIR} server" ON)
|
|
option(BUILD_CLIENT "Build ${PROJECT_DIR} client" ON)
|
|
|
|
add_subdirectory("src")
|