有没有办法在编译时设置DEBUG变量?
基于环境变量还是诸如target = release之类的?
您可以将CMAKE_BUILD_TYPE设置为Debug
例如cmake -DCMAKE_BUILD_TYPE=Debug [...]
,将启用CMAKE_C_FLAGS_DEBUG
或CMAKE_CXX_FLAGS_DEBUG
。
并附加这样的自定义标志,例如仅在调试构建类型下启用调试宏: set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLE_DEBUG_MACRO")
因此,只有在时才启用此宏CMAKE_BUILD_TYPE=Debug
。
或者,如注释中所述,add_definitions(-DENABLE_DEBUG_MACRO)
如果您不关心构建类型,也可以直接将其放置。
编辑以回答评论
当前,如果-DCMAKE_BUILD_TYPE = Debug已启用,我想在程序中向控制台打印一些内容(而不是cmake)。
为此,您可以在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
实时运行,无调试模式(无调试消息)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句