如何在CMake Release模式下启用断言?

阿什温·南贾帕(Ashwin Nanjappa)

CMake被用于编译某些C ++文件。assert代码中呼叫。这些呼叫在CMake的释放模式下被禁用。NDEBUG我猜它是在发布模式下定义的

如果我有兴趣在CMake的Release模式下声明,我如何启用它?

用户名

1个

如果您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 ...

2

添加自定义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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用QT和CMake在Debug模式下启用控制台窗口并在Release模式下禁用?

来自分类Dev

如何在调试模式下绕过断言的断言?

来自分类Dev

如何在开发模式下启用缓存?

来自分类Dev

如何在cmake中将构建类型更改为Release模式?

来自分类Dev

cmake:如何在调试和发布模式下构建opencv?

来自分类Dev

如何在隐身模式下启用Chrome扩展程序?

来自分类Dev

如何在ChromeDriver Headless模式下启用DRM

来自分类Dev

如何在Linux Mint 18.3下启用休眠模式?

来自分类Dev

如何在 Rails 5 API 模式下启用 CSRF

来自分类Dev

如何在cmake中启用`/ std:c ++ latest`?

来自分类Dev

如何在cmake中为OpenCV启用GTK +?

来自分类Dev

如何在cmake中启用`/ std:c ++ latest`?

来自分类Dev

默认情况下如何在组织模式下启用flyspell

来自分类Dev

在Chrome隐身模式下如何启用某些扩展程序

来自分类Dev

如何在没有Python调试库的情况下以Cmake / Visual Studio在调试模式下构建OpenCV

来自分类Dev

如何在启用二进制日志记录的安全模式下执行多表删除?

来自分类Dev

如何在iOS8的横向模式下启用iMessages / FB Messenger中的键盘?

来自分类Dev

默认情况下如何在节点中启用严格模式?

来自分类Dev

在plotly(python API)中:如何在离线模式下启用乳胶渲染?

来自分类Dev

如何在ES5 /严格模式下启用正确的尾部呼叫?

来自分类Dev

如何在RStudio的vim编辑模式下启用ctrl-c转义?

来自分类Dev

如何在 Firefox 中禁用插件但在隐身模式下保持启用

来自分类Dev

Clojure:如何在全球范围内启用规范断言?

来自分类Dev

如何在 NetBeans 中为 Java EE 项目启用断言?

来自分类Dev

如何在PyQtWebEngine中启用隐身模式?

来自分类Dev

如何在15.04中启用休眠模式?

来自分类Dev

如何在PyQtWebEngine中启用隐身模式?

来自分类Dev

如何在15.04中启用休眠模式?

来自分类Dev

如何在VS2017中为.cmake文件启用Intellisense

Related 相关文章

  1. 1

    如何使用QT和CMake在Debug模式下启用控制台窗口并在Release模式下禁用?

  2. 2

    如何在调试模式下绕过断言的断言?

  3. 3

    如何在开发模式下启用缓存?

  4. 4

    如何在cmake中将构建类型更改为Release模式?

  5. 5

    cmake:如何在调试和发布模式下构建opencv?

  6. 6

    如何在隐身模式下启用Chrome扩展程序?

  7. 7

    如何在ChromeDriver Headless模式下启用DRM

  8. 8

    如何在Linux Mint 18.3下启用休眠模式?

  9. 9

    如何在 Rails 5 API 模式下启用 CSRF

  10. 10

    如何在cmake中启用`/ std:c ++ latest`?

  11. 11

    如何在cmake中为OpenCV启用GTK +?

  12. 12

    如何在cmake中启用`/ std:c ++ latest`?

  13. 13

    默认情况下如何在组织模式下启用flyspell

  14. 14

    在Chrome隐身模式下如何启用某些扩展程序

  15. 15

    如何在没有Python调试库的情况下以Cmake / Visual Studio在调试模式下构建OpenCV

  16. 16

    如何在启用二进制日志记录的安全模式下执行多表删除?

  17. 17

    如何在iOS8的横向模式下启用iMessages / FB Messenger中的键盘?

  18. 18

    默认情况下如何在节点中启用严格模式?

  19. 19

    在plotly(python API)中:如何在离线模式下启用乳胶渲染?

  20. 20

    如何在ES5 /严格模式下启用正确的尾部呼叫?

  21. 21

    如何在RStudio的vim编辑模式下启用ctrl-c转义?

  22. 22

    如何在 Firefox 中禁用插件但在隐身模式下保持启用

  23. 23

    Clojure:如何在全球范围内启用规范断言?

  24. 24

    如何在 NetBeans 中为 Java EE 项目启用断言?

  25. 25

    如何在PyQtWebEngine中启用隐身模式?

  26. 26

    如何在15.04中启用休眠模式?

  27. 27

    如何在PyQtWebEngine中启用隐身模式?

  28. 28

    如何在15.04中启用休眠模式?

  29. 29

    如何在VS2017中为.cmake文件启用Intellisense

热门标签

归档