diff options
author | Brad King <brad.king@kitware.com> | 2016-04-11 14:45:56 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-04-11 15:25:08 (GMT) |
commit | bd581a373373ee9807fcab35dd3e83334b73174b (patch) | |
tree | c8d918fe75350d5e80ab4533372ecd3b92634a75 /Tests/RunCMake/try_compile | |
parent | 82ef90fcfccb1eaf53e4d15884ff3464aa9072a3 (diff) | |
download | CMake-bd581a373373ee9807fcab35dd3e83334b73174b.zip CMake-bd581a373373ee9807fcab35dd3e83334b73174b.tar.gz CMake-bd581a373373ee9807fcab35dd3e83334b73174b.tar.bz2 |
try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054)
In the `try_compile` source file signature we propagate the caller's
value of `CMAKE_<LANG>_FLAGS` into the test project. Extend this to
propagate `CMAKE_<LANG>_FLAGS_<CONFIG>` too instead of always using the
default value in the test project. This will be useful, for example, to
allow the MSVC runtime library to be changed (e.g. `-MDd` => `-MTd`).
Diffstat (limited to 'Tests/RunCMake/try_compile')
-rw-r--r-- | Tests/RunCMake/try_compile/CompileFlags.cmake | 17 | ||||
-rw-r--r-- | Tests/RunCMake/try_compile/RunCMakeTest.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/try_compile/src.c | 3 |
3 files changed, 21 insertions, 0 deletions
diff --git a/Tests/RunCMake/try_compile/CompileFlags.cmake b/Tests/RunCMake/try_compile/CompileFlags.cmake new file mode 100644 index 0000000..d4dc074 --- /dev/null +++ b/Tests/RunCMake/try_compile/CompileFlags.cmake @@ -0,0 +1,17 @@ +enable_language(C) +set(CMAKE_C_FLAGS_RELEASE "-DPP_ERROR ${CMAKE_C_FLAGS_DEBUG}") + +#----------------------------------------------------------------------------- +set(CMAKE_TRY_COMPILE_CONFIGURATION Release) +try_compile(RESULT ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/src.c + OUTPUT_VARIABLE out + ) +string(REPLACE "\n" "\n " out " ${out}") +if(RESULT) + message(FATAL_ERROR "try_compile passed but should have failed:\n${out}") +elseif(NOT "x${out}" MATCHES "PP_ERROR is defined") + message(FATAL_ERROR "try_compile did not fail with PP_ERROR:\n${out}") +else() + message(STATUS "try_compile with per-config flag worked as expected") +endif() diff --git a/Tests/RunCMake/try_compile/RunCMakeTest.cmake b/Tests/RunCMake/try_compile/RunCMakeTest.cmake index 43ce998..4b1d92a 100644 --- a/Tests/RunCMake/try_compile/RunCMakeTest.cmake +++ b/Tests/RunCMake/try_compile/RunCMakeTest.cmake @@ -21,6 +21,7 @@ run_cmake(TargetTypeInvalid) run_cmake(TargetTypeStatic) run_cmake(CMP0056) +run_cmake(CompileFlags) if(RunCMake_GENERATOR MATCHES "Make|Ninja") # Use a single build tree for a few tests without cleaning. diff --git a/Tests/RunCMake/try_compile/src.c b/Tests/RunCMake/try_compile/src.c index 78f2de1..ab83eb6 100644 --- a/Tests/RunCMake/try_compile/src.c +++ b/Tests/RunCMake/try_compile/src.c @@ -1 +1,4 @@ int main(void) { return 0; } +#ifdef PP_ERROR +# error PP_ERROR is defined +#endif |