Skip to content
Permalink
Browse files
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.
  • Loading branch information
leoetlino committed Apr 27, 2021
1 parent 20d00df commit d0484a9ea9331f2cedb080f06944d737343414f1
Showing with 10 additions and 6 deletions.
  1. +10 −6 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()
# 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()

0 comments on commit d0484a9

Please sign in to comment.