# 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")