CMAKE_BUILD_TYPE =发布是否意味着-DNDEBUG?

时间:2015-12-16 00:59:47

标签: c cmake assert

CMAKE_BUILD_TYPE=Release是否隐含暗示-DNDEBUG

如果不是:期望发生这种暗示是不合理的?

我想知道我的 CMakeLists.txt 中的CMake代码是否多余:

if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
    add_definitions(-DNDEBUG)
endif()

1 个答案:

答案 0 :(得分:6)

是的,它是由CMake设定的。通过CMake代码显示,对于许多编译器来说,它是设置的。可能他们只为这些编译器设置它,它接受这个标志。这是关于GCC的一条线:

Modules/Compiler/GNU.cmake:  set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")

但请注意,许多项目会覆盖发布/调试标志,而不会保留初始设置并覆盖用户的定义。