Add USE_MSVC_RELEASE_RUNTIME_ALWAYS to use Release CRT even in Debug builds

This commit is contained in:
Steve Streeting
2020-07-01 18:13:08 +01:00
parent d8c7f97dbb
commit a877acd07f

View File

@@ -63,6 +63,7 @@ IF (CMAKE_SYSTEM_NAME STREQUAL WindowsPhone OR CMAKE_SYSTEM_NAME STREQUAL Window
ELSE ()
OPTION(USE_MSVC_RUNTIME_LIBRARY_DLL "Use MSVC Runtime Library DLL (/MD or /MDd)" OFF)
ENDIF (CMAKE_SYSTEM_NAME STREQUAL WindowsPhone OR CMAKE_SYSTEM_NAME STREQUAL WindowsStore)
OPTION(USE_MSVC_RELEASE_RUNTIME_ALWAYS "Use MSVC Release Runtime Library even in Debug" OFF)
#SET(CMAKE_EXE_LINKER_FLAGS_INIT "/STACK:10000000 /INCREMENTAL:NO")
#SET(CMAKE_EXE_LINKER_FLAGS "/STACK:10000000 /INCREMENTAL:NO")
@@ -105,6 +106,21 @@ IF(MSVC)
ENDFOREACH(flag_var)
ENDIF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
IF (USE_MSVC_RELEASE_RUNTIME_ALWAYS)
FOREACH(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO )
IF(${flag_var} MATCHES "/MDd")
STRING(REGEX REPLACE "/MDd" "/MD" ${flag_var} "${${flag_var}}")
ENDIF(${flag_var} MATCHES "/MDd")
IF(${flag_var} MATCHES "/MTd")
STRING(REGEX REPLACE "/MTd" "/MT" ${flag_var} "${${flag_var}}")
ENDIF(${flag_var} MATCHES "/MTd")
# Need to remove _DEBUG too otherwise things like _ITERATOR_DEBUG_LEVEL mismatch
IF(${flag_var} MATCHES "-D_DEBUG")
STRING(REGEX REPLACE "-D_DEBUG" "" ${flag_var} "${${flag_var}}")
ENDIF(${flag_var} MATCHES "-D_DEBUG")
ENDFOREACH(flag_var)
ENDIF (USE_MSVC_RELEASE_RUNTIME_ALWAYS)
IF (CMAKE_CL_64)
ADD_DEFINITIONS(-D_WIN64)
ELSE()