我希望以下代码仅在 Debug模式下编译
main.cpp
#ifdef __DEBUG__
int a=1;
std::cout<<a;
#endif
将以下内容添加到 cmake
add_compile_options(
"-D__DEBUG__"
)
或
add_compile_options(
"$<$<CONFIG:DEBUG>:-D__DEBUG__>"
)
似乎什么也没做。
我怎样才能实现期望的行为?
最佳答案
选项 1:NDEBUG
CMake 已经在发布版本期间定义了NDEBUG
,只需使用它:
#ifndef NDEBUG
int a=1;
std::cout<<a;
#endif
选项 2:target_compile_definitions
配置拼写为Debug
,而不是DEBUG
。由于您不应该永远、永远使用目录级命令(例如add_compile_options
),因此我将向您展示如何使用目标级命令相反:
target_compile_definitions(
myTarget PRIVATE "$<$<CONFIG:Debug>:__DEBUG__>"
)
也没有必要使用过于通用的编译选项命令。 CMake 已经提供了一个抽象来确保预处理器定义可用。
关于c++ - 如何仅在 Debug模式下向 cmake 添加符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70347787/