In the man page for add_compile_options()
I don\'t see any mention of how to modify the Release/Debug compiler flags. Can you use add_compiler_opt
If you want to reuse your compiler settings through several of your projects or you need to differentiate the compiler options between C and C++, I would recommend the CMAKE_C_FLAGS
/CMAKE_CXX_FLAGS
variant with a toolchain file for each of your supported compilers (see e.g. here or here).
But if you just need some additional C++ compiler options in your project, taking add_compile_options(), target_compile_options() or target_compile_features() is the way to go.
And yes, you can differentiate between DEBUG
and RELEASE
there.
Examples
The add_compile_options()
command does take generator expressions:
add_compile_options("$<$:/MDd>")
or
add_compile_options(
"$<$:-std=gnu99>"
"$<$:-std=gnu99 -g3>"
)
Better to check also the compiler id:
add_compile_options("$<$,$>:/MDd>")
or
if (MSVC)
add_compile_options("$<$:/MDd>")
endif()
Even better to let CMake decide the correct compiler options for you. So you can either set the CXX_STANDARD needed for your target:
set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
or give the compiler feature your target needs with target_compile_features()
add_library(mylib requires_constexpr.cpp) # cxx_constexpr is a usage-requirement target_compile_features(mylib PUBLIC cxx_constexpr)
References