summaryrefslogtreecommitdiff
path: root/CMake
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-04-25 19:41:07 +0200
committerLéo Lam <leo@leolam.fr>2021-04-27 12:54:18 +0200
commitd0484a9ea9331f2cedb080f06944d737343414f1 (patch)
tree9e9af96acde2991573af2789c07bf31b377e6241 /CMake
parent20d00dfc79c5eb10b5a7578b29a712a08bf8f44a (diff)
CMake: Fix MSVC flags for Release/RelWithDebInfo
See https://gitlab.kitware.com/cmake/cmake/-/issues/20812 Manually redefine MSVC flags to match Visual Studio defaults and ensure that Release builds generate debug info.
Diffstat (limited to 'CMake')
-rw-r--r--CMake/FlagsOverride.cmake16
1 files changed, 10 insertions, 6 deletions
diff --git a/CMake/FlagsOverride.cmake b/CMake/FlagsOverride.cmake
index 39c55aa62a..d52cf4b153 100644
--- a/CMake/FlagsOverride.cmake
+++ b/CMake/FlagsOverride.cmake
@@ -1,7 +1,11 @@
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
- foreach(f CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_RELWITHDEBINFO)
- if("${${f}}" MATCHES "/Zi")
- string(REGEX REPLACE "/Zi" "/Z7" "${f}" "${${f}}")
- endif()
- endforeach()
-endif() \ No newline at end of file
+ # The default MSVC flags for Release and RelWithDebInfo are poorly chosen
+ # (see issue https://gitlab.kitware.com/cmake/cmake/-/issues/20812)
+ # By default, inlining is disabled for RelWithDebInfo.
+ # Manually redefine MSVC flags to match Visual Studio defaults
+ # and ensure that Release builds generate debug info.
+ foreach(f CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_RELEASE)
+ # optimize, define NDEBUG, generate debug info
+ set(${f} "/O2 /DNDEBUG /Z7")
+ endforeach()
+endif()