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_options()
to modify the Release/Debug compiler flags? If yes, how?
If no, is the recommended canonical method to modify the release/debug cmake variables[1] as described here ?
[1] i.e. set the cmake variables CMAKE_<LANG>_FLAGS_<TYPE> (for lang c/c++ it would be: CMAKE_CXX_FLAGS_RELEASE, CMAKE_CXX_FLAGS_DEBUG, CMAKE_C_FLAGS_RELEASE, CMAKE_C_FLAGS_DEBUG).
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()
ortarget_compile_features()
is the way to go.And yes, you can differentiate between
DEBUG
andRELEASE
there.Examples
The
add_compile_options()
command does take generator expressions:or
Better to check also the compiler id:
or
Even better to let CMake decide the correct compiler options for you. So you can either set the
CXX_STANDARD
needed for your target:or give the compiler feature your target needs with
target_compile_features()
References