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.
This commit is contained in:
parent
20d00dfc79
commit
d0484a9ea9
|
@ -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()
|
||||
# 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()
|
Loading…
Reference in New Issue