cmake在将CMAKE_BUILD_TYPE设置成Release、RelWithDebInfo、MinSizeRel时,都会加上-DNDEBUG选项,将assert给优化掉。Debug虽然启用了assert,但是又没有开优化。
如果需要在开启优化的同时启用assert,可以将CMAKE_BUILD_TYPE设置成None(因为有些project会设置默认CMAKE_BUILD_TYPE),然后另外传入编译选项,C语言的编译选项通过设置CMAKE_C_FLAGS传入,C++的编译选项通过设置CMAKE_CXX_FLAGS传入,两者可以一起设置:
cmake .. -DCMAKE_BUILD_TYPE=None -DCMAKE_C_FLAGS="-Wall -O3" -DCMAKE_CXX_FLAGS="-Wall -O3"
参考:https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html