繁体   English   中英

如何仅在调试模式下向 cmake 添加符号?

[英]How to add a symbol to cmake, in debug mode only?

我希望以下代码仅在调试模式下编译

主文件

    #ifdef __DEBUG__
        int a=1;
        std::cout<<a;
    #endif

将以下内容添加到 cmake

add_compile_options(
  "-D__DEBUG__"
)

或者

add_compile_options(
  "$<$<CONFIG:DEBUG>:-D__DEBUG__>"
)

只是似乎什么也没做。

我怎样才能实现期望的行为?

尝试设置 CMAKE_CXX_FLAGS

set(CMAKE_CXX_FLAGS "-D__DEBUG__")

在源代码中

#if defined(__DEBUG__)
 int a=1;
 std::cout<<a;
#endif

选项 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 已经提供了一个抽象来确保预处理器定义可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM