CMAKE_BUILD_TYPE=Release 隐式暗示 -DNDEBUG 吗?

如果不是:,期望发生这种含义是否合理?

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

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

最佳答案

是的,它是由CMake设置的。通过查看CMake代码可以发现,对于许多编译器来说,它是已设置的。可能他们只为接受此标志的这些编译器设置了它。这里是有关GCC的一行:

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

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

10-07 19:52
查看更多