CPlusPlusLearningProject/CMakeLists.txt

34 lines
1 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.26)
project(LearningProject CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 20)
option(BUILD_WITH_MODULES "Build with C++ Modules" ON)
2023-06-24 07:02:39 +00:00
option(BUILD_WITH_EXCEPTIONS "Build with C++ Exceptions" ON)
if(BUILD_WITH_MODULES)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE
"<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> <SOURCE>"
" -MT <DYNDEP_FILE> -MD -MF <DEP_FILE>"
" ${flags_to_scan_deps} -fdep-file=<DYNDEP_FILE> -fdep-output=<OBJECT>"
)
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc")
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG
"${compiler_flags_for_module_map} -fmodule-mapper=<MODULE_MAP_FILE>")
endif()
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
2023-06-24 07:02:39 +00:00
if(NOT BUILD_WITH_EXCEPTIONS)
add_compile_options(-fno-exceptions)
endif()
2023-06-24 07:02:39 +00:00
set(CMAKE_EXECUTABLE_SUFFIX ${EXECUTABLE_SUFFIX})
add_subdirectory(src)