Skip to content

Commit edde963

Browse files
committed
cmake: Respect user-provided configuration-specific flags
1 parent de90b47 commit edde963

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ if(POLICY CMP0171)
1919
cmake_policy(SET CMP0171 NEW)
2020
endif()
2121

22+
# When adjusting CMake flag variables, we must not override those explicitly
23+
# set by the user. These are a subset of the CACHE_VARIABLES property.
24+
get_directory_property(precious_variables CACHE_VARIABLES)
25+
2226
#=============================
2327
# Project / Package metadata
2428
#=============================

cmake/module/ProcessConfigurations.cmake

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,13 @@ function(remove_cxx_flag_from_all_configs flag)
105105
endfunction()
106106

107107
function(replace_cxx_flag_in_config config old_flag new_flag)
108-
string(TOUPPER "${config}" config_uppercase)
109-
string(REGEX REPLACE "(^| )${old_flag}( |$)" "\\1${new_flag}\\2" new_flags "${CMAKE_CXX_FLAGS_${config_uppercase}}")
110-
set(CMAKE_CXX_FLAGS_${config_uppercase} "${new_flags}" PARENT_SCOPE)
111-
set(CMAKE_CXX_FLAGS_${config_uppercase} "${new_flags}"
112-
CACHE STRING
113-
"Flags used by the CXX compiler during ${config_uppercase} builds."
114-
FORCE
115-
)
108+
string(TOUPPER "CMAKE_CXX_FLAGS_${config}" var_name)
109+
if("${var_name}" IN_LIST precious_variables)
110+
return()
111+
endif()
112+
string(REGEX REPLACE "(^| )${old_flag}( |$)" "\\1${new_flag}\\2" ${var_name} "${${var_name}}")
113+
set(${var_name} "${${var_name}}" PARENT_SCOPE)
114+
set_property(CACHE ${var_name} PROPERTY VALUE "${${var_name}}")
116115
endfunction()
117116

118117
set_default_config(RelWithDebInfo)

0 commit comments

Comments
 (0)