diff options
author | Brad King <brad.king@kitware.com> | 2020-11-13 16:15:57 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-11-13 16:46:23 (GMT) |
commit | c00a6d3967be94a1cd8dfa369d834feea3e91725 (patch) | |
tree | 00c24f1df5da1a20f8abe03bb387609a24507304 /Tests/RunCMake | |
parent | 6114c8e994761ae4873218499a951136a4cdd855 (diff) | |
download | CMake-c00a6d3967be94a1cd8dfa369d834feea3e91725.zip CMake-c00a6d3967be94a1cd8dfa369d834feea3e91725.tar.gz CMake-c00a6d3967be94a1cd8dfa369d834feea3e91725.tar.bz2 |
MSVC: Do not add /GR to CMAKE_CXX_FLAGS by default
The `/GR` flag has been on by default since MSVC cl 14.0 from VS 2005.
Remove it from the default flags to make it easier for projects to pass
`/GR-` themselves to turn it off.
Projects may be using string processing to replace `/GR` with another
flag, so we cannot simply drop it. Add a policy to drop it in a
compatible way.
Fixes: #21428
Diffstat (limited to 'Tests/RunCMake')
7 files changed, 27 insertions, 0 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 740815b..79f0d77 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -262,6 +262,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|XL|XLClang)$") endif() if(MSVC) add_RunCMake_test(MSVCRuntimeLibrary) + add_RunCMake_test(MSVCRuntimeTypeInfo) add_RunCMake_test(MSVCWarningFlags) endif() add_RunCMake_test(ObjectLibrary) diff --git a/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-NEW.cmake b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-NEW.cmake new file mode 100644 index 0000000..c8b0a91 --- /dev/null +++ b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0117 NEW) +include(CMP0117-common.cmake) diff --git a/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-OLD.cmake b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-OLD.cmake new file mode 100644 index 0000000..c0a61d0 --- /dev/null +++ b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0117 OLD) +include(CMP0117-common.cmake) diff --git a/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-WARN.cmake b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-WARN.cmake new file mode 100644 index 0000000..37d1b64 --- /dev/null +++ b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-WARN.cmake @@ -0,0 +1,2 @@ + +include(CMP0117-common.cmake) diff --git a/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-common.cmake b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-common.cmake new file mode 100644 index 0000000..5dda623 --- /dev/null +++ b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMP0117-common.cmake @@ -0,0 +1,12 @@ +enable_language(CXX) + +cmake_policy(GET CMP0117 cmp0117) +if(cmp0117 STREQUAL "NEW") + if(" ${CMAKE_CXX_FLAGS} " MATCHES " ([/-]GR) ") + message(SEND_ERROR "CMAKE_CXX_FLAGS has '${CMAKE_MATCH_1}' under NEW behavior") + endif() +else() + if(NOT " ${CMAKE_CXX_FLAGS} " MATCHES " /GR ") + message(SEND_ERROR "CMAKE_CXX_FLAGS does not have '/GR' under OLD behavior") + endif() +endif() diff --git a/Tests/RunCMake/MSVCRuntimeTypeInfo/CMakeLists.txt b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMakeLists.txt new file mode 100644 index 0000000..3e470a2 --- /dev/null +++ b/Tests/RunCMake/MSVCRuntimeTypeInfo/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.14) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/MSVCRuntimeTypeInfo/RunCMakeTest.cmake b/Tests/RunCMake/MSVCRuntimeTypeInfo/RunCMakeTest.cmake new file mode 100644 index 0000000..c870f59 --- /dev/null +++ b/Tests/RunCMake/MSVCRuntimeTypeInfo/RunCMakeTest.cmake @@ -0,0 +1,5 @@ +include(RunCMake) + +run_cmake(CMP0117-WARN) +run_cmake(CMP0117-OLD) +run_cmake(CMP0117-NEW) |