
C++ modules have two variants which are of importance to CMake: - `CXX_MODULES`: interface modules (those using `export module M;`, `export module M:part;`, or `module M:internal_part;`) - `CXX_MODULE_HEADER_UNITS`: importable header units Creating C++ modules or partitions are *not* supported in any other source listing. This is because the source files must be installed (so their scope matters), but not part of usage requirements (what it means for a module source to be injected into a consumer is not clear at this moment). Due to the way `FILE_SET` works with scopes, they are a perfect fit as long as `INTERFACE` is not allowed (which it is not).
9 lines
176 B
CMake
9 lines
176 B
CMake
add_library(module)
|
|
target_sources(module
|
|
INTERFACE
|
|
FILE_SET fs TYPE CXX_MODULES FILES
|
|
sources/module.cxx)
|
|
target_compile_features(module
|
|
PRIVATE
|
|
cxx_std_20)
|