CMAKE_BUILD_TYPE=Release 是否暗示 -DNDEBUG?
Does CMAKE_BUILD_TYPE=Release imply -DNDEBUG?
CMAKE_BUILD_TYPE=Release
implicitly imply -DNDEBUG
吗?
如果不是:是否可以合理地预期这种暗示会发生?
我想知道以下 CMake 代码在我的 CMakeLists.txt 中是否多余:
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DNDEBUG)
endif()
是的,是CMake设置的。通过 CMake 代码进行 Grepping 显示,它已为许多编译器设置。可能他们只为这些接受此标志的编译器设置它。这是关于 GCC 的行之一:
Modules/Compiler/GNU.cmake: set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
但请注意,许多项目会在不保留初始设置的情况下覆盖 release/debug 标志,并且还会覆盖用户的定义。
CMAKE_BUILD_TYPE=Release
implicitly imply -DNDEBUG
吗?
如果不是:是否可以合理地预期这种暗示会发生?
我想知道以下 CMake 代码在我的 CMakeLists.txt 中是否多余:
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DNDEBUG)
endif()
是的,是CMake设置的。通过 CMake 代码进行 Grepping 显示,它已为许多编译器设置。可能他们只为这些接受此标志的编译器设置它。这是关于 GCC 的行之一:
Modules/Compiler/GNU.cmake: set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
但请注意,许多项目会在不保留初始设置的情况下覆盖 release/debug 标志,并且还会覆盖用户的定义。