mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-02 03:39:43 -06:00
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).
14 lines
348 B
CMake
14 lines
348 B
CMake
enable_language(CXX)
|
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
|
|
set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE "")
|
|
|
|
add_library(module-header
|
|
sources/cxx-anchor.cxx)
|
|
target_sources(module-header
|
|
PUBLIC
|
|
FILE_SET fs TYPE CXX_MODULE_HEADER_UNITS FILES
|
|
sources/module-header.h)
|
|
target_compile_features(module-header
|
|
PRIVATE
|
|
cxx_std_20)
|