diff options
author | Brad King <brad.king@kitware.com> | 2023-10-10 15:14:50 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-10-10 15:25:21 (GMT) |
commit | fd81024e804b9b874cfe86e3781680db22f8c552 (patch) | |
tree | 777270e74de30ca3ba7147343528593a369cfac6 /Tests | |
parent | 308d687018a8f63936a3d850ef487e9194e08f31 (diff) | |
download | CMake-fd81024e804b9b874cfe86e3781680db22f8c552.zip CMake-fd81024e804b9b874cfe86e3781680db22f8c552.tar.gz CMake-fd81024e804b9b874cfe86e3781680db22f8c552.tar.bz2 |
cxxmodules: Honor CMAKE_CXX_SCAN_FOR_MODULES in try_compile
Under CMP0155's NEW behavior, projects that explicitly enable C++20
support with `set(CMAKE_CXX_STANDARD 20)` may also explicitly
disable scanning with `set(CMAKE_CXX_SCAN_FOR_MODULES OFF)`.
We already propagate `CMAKE_CXX_STANDARD` into `try_compile` test
projects, so propagate `CMAKE_CXX_SCAN_FOR_MODULES` too.
Fixes: #25313
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/RunCMake/CXXModules/NoScanningVariable.cmake | 21 | ||||
-rw-r--r-- | Tests/RunCMake/CXXModules/RunCMakeTest.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CXXModules/main-no-use.cxx | 4 |
3 files changed, 26 insertions, 0 deletions
diff --git a/Tests/RunCMake/CXXModules/NoScanningVariable.cmake b/Tests/RunCMake/CXXModules/NoScanningVariable.cmake new file mode 100644 index 0000000..4bb6a70 --- /dev/null +++ b/Tests/RunCMake/CXXModules/NoScanningVariable.cmake @@ -0,0 +1,21 @@ +# Enable scanning by default for targets that explicitly use C++ 20. +cmake_policy(SET CMP0155 NEW) + +enable_language(CXX) + +# Hide any real scanning rule that may be available. +unset(CMAKE_CXX_SCANDEP_SOURCE) + +# Explicitly enable C++20 for all targets. +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# Explicitly suppress scanning so that support is not required. +set(CMAKE_CXX_SCAN_FOR_MODULES OFF) + +add_executable(noscanning-variable main-no-use.cxx) + +# Verify that CMAKE_CXX_SCAN_FOR_MODULES is propagated into the check. +# FIXME: Unset CMAKE_CXX_SCANDEP_SOURCE inside try_compile so this +# test can verify behavior on newer compilers too. +try_compile(result SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main-no-use.cxx) diff --git a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake index 05d2655..e13b2d4 100644 --- a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake +++ b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake @@ -20,6 +20,7 @@ if ("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES) run_cmake(NoScanningSourceFileProperty) run_cmake(NoScanningTargetProperty) + run_cmake(NoScanningVariable) run_cmake(CMP0155-OLD) run_cmake(CMP0155-NEW) endif () diff --git a/Tests/RunCMake/CXXModules/main-no-use.cxx b/Tests/RunCMake/CXXModules/main-no-use.cxx new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/RunCMake/CXXModules/main-no-use.cxx @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} |