diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2022-04-08 17:56:33 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2022-06-16 14:28:34 (GMT) |
commit | 386465bf8396dca8d00448b23734bc5edafb17c8 (patch) | |
tree | 08fe81417c136cfb716a53fa3db2fb91bdc83b4c /Tests/RunCMake/CXXModules/NotCXXSourceModules.cmake | |
parent | ff30a5397d804b9de564d54868bd5fdf504361c2 (diff) | |
download | CMake-386465bf8396dca8d00448b23734bc5edafb17c8.zip CMake-386465bf8396dca8d00448b23734bc5edafb17c8.tar.gz CMake-386465bf8396dca8d00448b23734bc5edafb17c8.tar.bz2 |
cmTarget: add support for C++ module fileset types
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).
Diffstat (limited to 'Tests/RunCMake/CXXModules/NotCXXSourceModules.cmake')
-rw-r--r-- | Tests/RunCMake/CXXModules/NotCXXSourceModules.cmake | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Tests/RunCMake/CXXModules/NotCXXSourceModules.cmake b/Tests/RunCMake/CXXModules/NotCXXSourceModules.cmake new file mode 100644 index 0000000..f7a6060 --- /dev/null +++ b/Tests/RunCMake/CXXModules/NotCXXSourceModules.cmake @@ -0,0 +1,13 @@ +enable_language(C) +enable_language(CXX) +set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) +set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE "") + +add_library(not-cxx-source) +target_sources(not-cxx-source + PUBLIC + FILE_SET fs TYPE CXX_MODULES FILES + sources/c-anchor.c) +target_compile_features(not-cxx-source + PRIVATE + cxx_std_20) |