CMake: Allow to toggle between static and dynamic MSVC runtime

After enabling wxBUILD_USE_STATIC_RUNTIME it cannot be disabled again
(except by manually modifying CMAKE_C*_FLAGS_*). Improve this by setting
the build flags to their default value when wxBUILD_USE_STATIC_RUNTIME
is disabled.

Closes https://github.com/wxWidgets/wxWidgets/pull/1338
This commit is contained in:
Maarten Bent
2019-06-04 22:49:22 +02:00
committed by Vadim Zeitlin
parent dab230a3be
commit 9732a2d99f

View File

@@ -8,7 +8,14 @@
# Licence: wxWindows licence # Licence: wxWindows licence
############################################################################# #############################################################################
if(DEFINED wxBUILD_USE_STATIC_RUNTIME AND wxBUILD_USE_STATIC_RUNTIME) if(MSVC)
# Determine MSVC runtime library flag
set(MSVC_LIB_USE "/MD")
set(MSVC_LIB_REPLACE "/MT")
if(wxBUILD_USE_STATIC_RUNTIME)
set(MSVC_LIB_USE "/MT")
set(MSVC_LIB_REPLACE "/MD")
endif()
# Set MSVC runtime flags for all configurations # Set MSVC runtime flags for all configurations
foreach(cfg "" ${CMAKE_CONFIGURATION_TYPES}) foreach(cfg "" ${CMAKE_CONFIGURATION_TYPES})
set(c_flag_var CMAKE_C_FLAGS) set(c_flag_var CMAKE_C_FLAGS)
@@ -18,13 +25,13 @@ if(DEFINED wxBUILD_USE_STATIC_RUNTIME AND wxBUILD_USE_STATIC_RUNTIME)
wx_string_append(c_flag_var "_${cfg_upper}") wx_string_append(c_flag_var "_${cfg_upper}")
wx_string_append(cxx_flag_var "_${cfg_upper}") wx_string_append(cxx_flag_var "_${cfg_upper}")
endif() endif()
if(${c_flag_var} MATCHES "/MD") if(${c_flag_var} MATCHES ${MSVC_LIB_REPLACE})
string(REPLACE "/MD" "/MT" ${c_flag_var} "${${c_flag_var}}") string(REPLACE ${MSVC_LIB_REPLACE} ${MSVC_LIB_USE} ${c_flag_var} "${${c_flag_var}}")
set(${c_flag_var} ${${c_flag_var}} CACHE STRING set(${c_flag_var} ${${c_flag_var}} CACHE STRING
"Flags used by the C compiler during ${cfg_upper} builds." FORCE) "Flags used by the C compiler during ${cfg_upper} builds." FORCE)
endif() endif()
if(${cxx_flag_var} MATCHES "/MD") if(${cxx_flag_var} MATCHES ${MSVC_LIB_REPLACE})
string(REPLACE "/MD" "/MT" ${cxx_flag_var} "${${cxx_flag_var}}") string(REPLACE ${MSVC_LIB_REPLACE} ${MSVC_LIB_USE} ${cxx_flag_var} "${${cxx_flag_var}}")
set(${cxx_flag_var} ${${cxx_flag_var}} CACHE STRING set(${cxx_flag_var} ${${cxx_flag_var}} CACHE STRING
"Flags used by the CXX compiler during ${cfg_upper} builds." FORCE) "Flags used by the CXX compiler during ${cfg_upper} builds." FORCE)
endif() endif()