mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-24 07:08:38 -05:00
95402a0bd7
The collator will use this to know where the target's export information needs to go so that module properties may be provided.
86 lines
2.4 KiB
CMake
86 lines
2.4 KiB
CMake
# Fake out that we have dyndep; we only need to generate, not actually build
|
|
# here.
|
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
|
|
set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE "")
|
|
|
|
enable_language(CXX)
|
|
|
|
if (NOT CMAKE_GENERATOR MATCHES "Ninja")
|
|
message(FATAL_ERROR
|
|
"This test requires a 'Ninja' generator to be used.")
|
|
endif ()
|
|
|
|
add_library(ninja-exports-public)
|
|
target_sources(ninja-exports-public
|
|
PRIVATE
|
|
sources/module-impl.cxx
|
|
sources/module-internal-part-impl.cxx
|
|
sources/module-part-impl.cxx
|
|
sources/module-use.cxx
|
|
PUBLIC
|
|
FILE_SET modules TYPE CXX_MODULES
|
|
BASE_DIRS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/sources"
|
|
FILES
|
|
sources/module.cxx
|
|
sources/module-part.cxx
|
|
FILE_SET internal_partitions TYPE CXX_MODULES FILES
|
|
sources/module-internal-part.cxx)
|
|
target_compile_features(ninja-exports-public
|
|
PRIVATE
|
|
cxx_std_20)
|
|
set_property(TARGET ninja-exports-public
|
|
PROPERTY EXPORT_NAME "with-public")
|
|
|
|
install(TARGETS ninja-exports-public
|
|
EXPORT exp
|
|
FILE_SET modules
|
|
DESTINATION "lib/cxx"
|
|
COMPONENT "modules"
|
|
FILE_SET internal_partitions
|
|
DESTINATION "lib/cxx/internals"
|
|
COMPONENT "modules-internal")
|
|
|
|
add_library(ninja-exports-private)
|
|
target_sources(ninja-exports-private
|
|
PRIVATE
|
|
sources/module-impl.cxx
|
|
sources/module-internal-part-impl.cxx
|
|
sources/module-part-impl.cxx
|
|
sources/module-use.cxx
|
|
PRIVATE
|
|
FILE_SET modules TYPE CXX_MODULES
|
|
BASE_DIRS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/sources"
|
|
FILES
|
|
sources/module.cxx
|
|
sources/module-part.cxx
|
|
FILE_SET internal_partitions TYPE CXX_MODULES FILES
|
|
sources/module-internal-part.cxx)
|
|
target_compile_features(ninja-exports-private
|
|
PRIVATE
|
|
cxx_std_20)
|
|
set_property(TARGET ninja-exports-private
|
|
PROPERTY EXPORT_NAME "with-private")
|
|
|
|
install(TARGETS ninja-exports-private
|
|
EXPORT exp)
|
|
|
|
# Test multiple build exports.
|
|
export(EXPORT exp
|
|
FILE "${CMAKE_BINARY_DIR}/lib/cmake/export1/export1-targets.cmake"
|
|
NAMESPACE export1::
|
|
CXX_MODULES_DIRECTORY "cxx-modules")
|
|
export(EXPORT exp
|
|
FILE "${CMAKE_BINARY_DIR}/lib/cmake/export2/export2-targets.cmake"
|
|
CXX_MODULES_DIRECTORY "cxx-modules")
|
|
|
|
# Test multiple install exports.
|
|
install(EXPORT exp
|
|
DESTINATION "lib/cmake/export1"
|
|
NAMESPACE export1::
|
|
CXX_MODULES_DIRECTORY "cxx-modules")
|
|
install(EXPORT exp
|
|
DESTINATION "lib/cmake/export2"
|
|
CXX_MODULES_DIRECTORY "cxx-modules")
|