Skip to content

Commit d480a5d

Browse files
committed
set_optimization_flags: look specifically for optimization flags
1 parent 65d5917 commit d480a5d

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

cmake/functions/project_flags.cmake

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,35 @@ endmacro()
5050
# @brief Set the default optimization flags in case the user didn't
5151
# explicitly choose it with -DCMAKE_CXX_FLAGS
5252
macro(set_optimization_flags)
53-
if (NOT CMAKE_CXX_FLAGS)
53+
set(OPT_FLAGS /O1 /O2 /Ob /Od /Og /Oi /Os /Ot /Ox /Oy /favor -O0 -O1 -O -O2 -O3 -Os -Ofast -Og)
54+
set(OPTIMIZATION_FLAG_IS_SET OFF)
55+
string(REPLACE " " ";" CMAKE_CXX_FLAGS_LIST ${CMAKE_CXX_FLAGS})
56+
foreach(FLAG ${CMAKE_CXX_FLAGS_LIST})
57+
if (${FLAG} IN_LIST OPT_FLAGS)
58+
message("CXX optimization flag is already set to ${FLAG}")
59+
set(OPTIMIZATION_FLAG_IS_SET ON)
60+
endif()
61+
endforeach()
62+
63+
if (NOT OPTIMIZATION_FLAG_IS_SET)
5464
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
5565
if (EMSCRIPTEN)
56-
list(APPEND CMAKE_CXX_FLAGS "-O0 -g4")
66+
list(APPEND CMAKE_CXX_FLAGS " -O0 -g4")
5767
elseif (MSVC)
58-
list(APPEND CMAKE_CXX_FLAGS "/O0")
68+
list(APPEND CMAKE_CXX_FLAGS " /O0")
5969
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
60-
list(APPEND CMAKE_CXX_FLAGS "-O0")
70+
list(APPEND CMAKE_CXX_FLAGS " -O0")
6171
else()
6272
# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
63-
list(APPEND CMAKE_CXX_FLAGS "-Og")
73+
list(APPEND CMAKE_CXX_FLAGS " -Og")
6474
endif()
6575
else()
6676
if (MSVC)
67-
list(APPEND CMAKE_CXX_FLAGS "/O2")
77+
list(APPEND CMAKE_CXX_FLAGS " /O2")
6878
else()
69-
list(APPEND CMAKE_CXX_FLAGS "-O2")
79+
list(APPEND CMAKE_CXX_FLAGS " -O2")
7080
endif()
7181
endif()
7282
message("Setting CXX flags to default for ${CMAKE_BUILD_TYPE} mode (${CMAKE_CXX_FLAGS})")
73-
else()
74-
message("CXX flags are already set to ${CMAKE_CXX_FLAGS}")
7583
endif()
7684
endmacro()

0 commit comments

Comments
 (0)