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) 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 " " " -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() if(NOT BUILD_WITH_EXCEPTIONS) add_compile_options(-fno-exceptions) endif() set(CMAKE_EXECUTABLE_SUFFIX ${EXECUTABLE_SUFFIX}) add_subdirectory(src)