diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2023-05-14 21:24:41 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-05-18 12:34:31 (GMT) |
commit | 69e452524129552e4891feb7949c4af1567a525f (patch) | |
tree | 6cd58a5277f1712be707d94989caceb3e7ef3c92 /Tests | |
parent | 18f87c87f86473dd2106b6d8ab7acc9def99b9b1 (diff) | |
download | CMake-69e452524129552e4891feb7949c4af1567a525f.zip CMake-69e452524129552e4891feb7949c4af1567a525f.tar.gz CMake-69e452524129552e4891feb7949c4af1567a525f.tar.bz2 |
Tests/CXXModules: add example for private modules between targets
Adapted from the example in issue #24652 by Ivan Garramona.
Diffstat (limited to 'Tests')
8 files changed, 39 insertions, 0 deletions
diff --git a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake index c1129ca..b088724 100644 --- a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake +++ b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake @@ -155,6 +155,9 @@ endif () # Tests which require collation work. if ("collation" IN_LIST CMake_TEST_MODULE_COMPILATION) run_cxx_module_test(public-req-private) + set(RunCMake_CXXModules_NO_TEST 1) + run_cxx_module_test(req-private-other-target) + unset(RunCMake_CXXModules_NO_TEST) endif () # Tests which use named modules in shared libraries. diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target-build-result.txt b/Tests/RunCMake/CXXModules/examples/req-private-other-target-build-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target-build-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target-build-stdout.txt b/Tests/RunCMake/CXXModules/examples/req-private-other-target-build-stdout.txt new file mode 100644 index 0000000..912c2e9 --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target-build-stdout.txt @@ -0,0 +1 @@ +((Ninja generators)?(Unable to use module 'lib.priv' as it is 'PRIVATE' and therefore not accessible outside of its owning target.)) diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt b/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt new file mode 100644 index 0000000..5e4392a --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target-stderr.txt @@ -0,0 +1,9 @@ +CMake Warning \(dev\) at CMakeLists.txt:7 \(target_sources\): + CMake's C\+\+ module support is experimental. It is meant only for + experimentation and feedback to CMake developers. +This warning is for project developers. Use -Wno-dev to suppress it. + +CMake Warning \(dev\): + C\+\+20 modules support via CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP is + experimental. It is meant only for compiler developers to try. +This warning is for project developers. Use -Wno-dev to suppress it. diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/req-private-other-target/CMakeLists.txt new file mode 100644 index 0000000..910c515 --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.26) +project(req_private_other_target CXX) + +include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake") + +add_library(lib) +target_sources(lib + PUBLIC FILE_SET pub TYPE CXX_MODULES FILES lib.cxx + PRIVATE FILE_SET priv TYPE CXX_MODULES FILES priv.cxx +) +target_compile_features(lib PUBLIC cxx_std_20) + +add_executable(exe main.cxx) +target_link_libraries(exe PRIVATE lib) + +add_test(NAME exe COMMAND exe) diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target/lib.cxx b/Tests/RunCMake/CXXModules/examples/req-private-other-target/lib.cxx new file mode 100644 index 0000000..066c2e1 --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target/lib.cxx @@ -0,0 +1 @@ +export module lib; diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target/main.cxx b/Tests/RunCMake/CXXModules/examples/req-private-other-target/main.cxx new file mode 100644 index 0000000..08b08ff --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target/main.cxx @@ -0,0 +1,7 @@ +import lib; +import lib.priv; + +int main(int argc, char const* argv[]) +{ + return 0; +} diff --git a/Tests/RunCMake/CXXModules/examples/req-private-other-target/priv.cxx b/Tests/RunCMake/CXXModules/examples/req-private-other-target/priv.cxx new file mode 100644 index 0000000..a7cad3b --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/req-private-other-target/priv.cxx @@ -0,0 +1 @@ +export module lib.priv; |