31 lines
940 B
CMake
31 lines
940 B
CMake
cmake_minimum_required(VERSION 4.0)
|
|
|
|
project(test_module LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
message(WARNING "test_module requires Clang for C++ modules; skipping")
|
|
return()
|
|
endif()
|
|
|
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
|
|
|
|
add_executable(test_module main.cppm)
|
|
target_sources(
|
|
test_module
|
|
PRIVATE
|
|
FILE_SET cxx_modules TYPE CXX_MODULES
|
|
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
|
|
FILES main.cppm math.cppm math2.cppm)
|
|
target_compile_features(test_module PRIVATE cxx_std_23)
|
|
target_compile_options(
|
|
test_module
|
|
PRIVATE
|
|
# Re-enable implicit modules for Clang std import within this test target
|
|
-fimplicit-modules -fimplicit-module-maps
|
|
-Wall -Wextra -Wpedantic $<$<CONFIG:Debug>:-g -O0>
|
|
-Wno-import-implementation-partition-unit-in-interface-unit
|
|
$<$<CONFIG:Release>:-O3>)
|