【发布时间】:2014-03-03 06:56:38
【问题描述】:
CMake 被用于编译一些 C++ 文件。代码中有assert 调用。这些调用在 CMake 的发布模式下被禁用。我猜它在发布模式下定义了NDEBUG。
如果我有兴趣在 CMake 的 Release 模式下使用断言,我该如何启用它?
【问题讨论】:
-
显然从
CMAKE_CXX_RELEASE_FLAGS中删除这个定义。 -
请注意,如果您发现自己需要在 Release 中进行检查,
assert可能是该工作的错误工具(尽管您的问题仍有有效的用例,例如调试仅在 Release 中出现的问题)。考虑引入额外的诊断宏,这些宏的语义比 assert 弱(实际上指定了一个必须永不失败的条件),但仍然可以有选择地启用(例如,如果用户通过了可能会失败的条件)函数的参数无效)。