How to enable assert in CMake Release mode?
See this answer in the CMake FAQ, i.e.:
Fix it manually by changing the definition of the cache variables CMAKE_C_FLAGS_RELEASE
and CMAKE_CXX_FLAGS_RELEASE
. This has to be done every time you set up a new build directory.
To fix it permanently, create a custom CMake rules file in your source folder with the desired settings for the release flags (omit the option /D NDEBUG
). Then in your outermost CMakeLists.txt point the variable CMAKE_USER_MAKE_RULES_OVERRIDE
to the custom CMake rules file.
This would be a solution for the MSVC compiler:
string( REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
A better option may be to enable asserts not in Release mode but in RelWithDebInfo mode instead:
string( REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
But this depends on your project and preferences of course.