@@ -50,27 +50,35 @@ endmacro()
50
50
# @brief Set the default optimization flags in case the user didn't
51
51
# explicitly choose it with -DCMAKE_CXX_FLAGS
52
52
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 )
54
64
if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
55
65
if (EMSCRIPTEN )
56
- list (APPEND CMAKE_CXX_FLAGS "-O0 -g4" )
66
+ list (APPEND CMAKE_CXX_FLAGS " -O0 -g4" )
57
67
elseif (MSVC )
58
- list (APPEND CMAKE_CXX_FLAGS "/O0" )
68
+ list (APPEND CMAKE_CXX_FLAGS " /O0" )
59
69
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" )
61
71
else ()
62
72
# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
63
- list (APPEND CMAKE_CXX_FLAGS "-Og" )
73
+ list (APPEND CMAKE_CXX_FLAGS " -Og" )
64
74
endif ()
65
75
else ()
66
76
if (MSVC )
67
- list (APPEND CMAKE_CXX_FLAGS "/O2" )
77
+ list (APPEND CMAKE_CXX_FLAGS " /O2" )
68
78
else ()
69
- list (APPEND CMAKE_CXX_FLAGS "-O2" )
79
+ list (APPEND CMAKE_CXX_FLAGS " -O2" )
70
80
endif ()
71
81
endif ()
72
82
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} " )
75
83
endif ()
76
84
endmacro ()
0 commit comments