编译时CMake C++设置头部DEBUG变量?

Chr*_*itt 1 c++ cmake

有没有办法在编译时设置DEBUG变量?

基于环境变量或类似目标=发布?

coi*_*oin 6

您可以将CMAKE_BUILD_TYPE设置为Debug

例如cmake -DCMAKE_BUILD_TYPE=Debug [...]哪个会启用CMAKE_C_FLAGS_DEBUGCMAKE_CXX_FLAGS_DEBUG.

并附加这样的自定义标志,例如仅在调试构建类型时启用调试宏: set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLE_DEBUG_MACRO")

所以这个宏只会在启用时启用CMAKE_BUILD_TYPE=Debug.

或者如评论中提到的,add_definitions(-DENABLE_DEBUG_MACRO)如果您不关心构建类型,也可以直接放置.

编辑以回答评论

目前我想在我的程序(而不是cmake)中打印一些东西,如果-DCMAKE_BUILD_TYPE = Debug已启用

为此,您可以在C++代码中定义一个DEBUG_PRINT仅在ENABLE_DEBUG_MACRO定义时才起作用的宏.

#ifdef ENABLE_DEBUG_MACRO
#  define DEBUG_PRINT(msg, ...) fprintf(stdout, "[debug] " msg "\n", ##__VA_ARGS__);
#else
#  define DEBUG_PRINT(msg, ...) 
#endif
Run Code Online (Sandbox Code Playgroud)

使用调试模式

没有调试模式的直播(没有调试消息)