CMake被用于编译某些C ++文件。assert
代码中有呼叫。这些呼叫在CMake的释放模式下被禁用。NDEBUG
我猜它是在发布模式下定义的。
如果我有兴趣在CMake的Release模式下声明,我如何启用它?
如果您assert
只对自己代码中的功能感兴趣,那么简单的一种解决方案是提供自定义断言。例如:
#if (MY_DEBUG)
# define MY_ASSERT(A) ... checks here ...
#else
# define MY_ASSERT(A) ... ignore A ...
#endif
使用option
启用/禁用断言:
# CMakeLists.txt
option(ENABLE_MY_ASSERT "Turn on MY_ASSERT checks" OFF)
if(ENABLE_MY_ASSERT)
add_definitions(-DMY_DEBUG=1)
else()
add_definitions(-DMY_DEBUG=0)
endif()
在这种情况下,您可以完全控制检查,可以验证一个组件而忽略其他组件:
... FOO_DEBUG=0 BOO_DEBUG=1 BAR_DEBUG=0 ...
添加自定义CMAKE_BUILD_TYPE(另请参见CMAKE_CONFIGURATION_TYPES):
cmake_minimum_required(VERSION 2.8.12)
project(foo)
set(CMAKE_CXX_FLAGS_MYREL "-O3")
add_library(foo foo.cpp)
输出:
# Debug
# ... -g ...
# Release
# ... -O3 -DNDEBUG ...
# RelWithDebInfo
# ... -O2 -g -DNDEBUG ...
# MyRel
# ... -O3 ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句