diff --git a/CMakeLists.txt b/CMakeLists.txt index 46210d3..b43dda8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,23 +1,29 @@ cmake_minimum_required(VERSION 3.26) project(LearningProject CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_CXX_STANDARD 20) -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE - " " - " -MT -MD -MF " - " ${flags_to_scan_deps} -fdep-file= -fdep-output=" - ) +option(BUILD_WITH_MODULES "Build with C++ Modules" ON) - set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc") - set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG - "${compiler_flags_for_module_map} -fmodule-mapper=") +if(BUILD_WITH_MODULES) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE + " " + " -MT -MD -MF " + " ${flags_to_scan_deps} -fdep-file= -fdep-output=" + ) + + set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc") + set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG + "${compiler_flags_for_module_map} -fmodule-mapper=") + 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() -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) -set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a") -set(CMAKE_CXX_EXTENSIONS OFF) + add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index af57750..4aad8cf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,8 +1,12 @@ -add_subdirectory(math) +if (BUILD_WITH_MODULES) + add_subdirectory(math) +endif() add_executable(hello hello.cc) -add_executable(sqrt sqrt.cc) -target_link_libraries(sqrt PRIVATE Math) +if (BUILD_WITH_MODULES) + add_executable(sqrt sqrt.cc) + target_link_libraries(sqrt PRIVATE Math) +endif() add_executable(inheritance inheritance.cc) add_executable(enumerations enumerations.cc) add_executable(namespaces namespaces.cc)