cmake_minimum_required(VERSION 4.2) # CMake 4.3 rotated the experimental gate UUID for `import std`. if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.3") set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "451f2fe2-a8a2-47c3-bc32-94786d8fc91b") else() set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444") endif() project(tsl-server LANGUAGES C CXX) set(CMAKE_CXX_SCAN_FOR_MODULES ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_MODULE_STD 1) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") message(STATUS "Building with GCC; C++ modules support is experimental for this project") else() message(WARNING "Unsupported compiler for modules: ${CMAKE_CXX_COMPILER_ID}. Build may fail.") endif() # 设置默认构建类型 if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") endif() option(BUILD_TESTS "Build tests" ON) add_subdirectory(src) if(BUILD_TESTS) enable_testing() add_subdirectory(test) endif()