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

克里斯汀·施密特(Christian Schmitt)

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

基于环境变量还是诸如target = release之类的?

呱呱

您可以将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)如果您不关心构建类型,也可以直接将其放置

编辑以回答评论

当前,如果-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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ CMake编译指令与?

来自分类Dev

使用cmake编译标头以获取错误

来自分类Dev

build c++ in debug mode with biicode cmake

来自分类Dev

cmake无法编译为C ++ 11标准

来自分类Dev

用CMake编译CU和C文件

来自分类Dev

使用CMake使用CUDA代码编译c ++

来自分类Dev

C ++在编译时是否支持全局头?

来自分类Dev

在C ++中使用CMAKE中的变量

来自分类Dev

CMake:构建项目时执行C ++文件

来自分类Dev

告诉CMake对来自CMake的C文件使用C ++编译器?

来自分类Dev

交叉编译c / c ++ / cuda程序时尝试使用CMake

来自分类Dev

CMake编译时定义

来自分类Dev

CMake在编译Google的protobuf示例时找不到protobuf

来自分类Dev

使用CMAKE编译CUDA C ++-指定了多个编译阶段

来自分类Dev

CMake包含“私有”标头时出错

来自分类Dev

如何加快启用CMake的C ++项目的编译时间?

来自分类Dev

在TravisCI下更改Cmake的C ++编译器

来自分类Dev

如何使用CMake使Python脚本编译和运行C ++程序

来自分类Dev

如何使用CMake将C ++编译为CUDA

来自分类Dev

c ++ 17的charconv是否具有cmake编译功能?

来自分类Dev

如何使用cmake编译包含MPI的C程序

来自分类Dev

使用使用Boost / python.hpp的CMake编译c ++程序

来自分类Dev

如何获取c源目录而不是cmake编译目录

来自分类Dev

无法使用CMake编译简单的Opencv C ++文件

来自分类Dev

来自 C++ 编译器的 CMake 语法高亮显示

来自分类Dev

在 Android 中链接使用 CMake 编译的 C 库的问题。

来自分类Dev

CMake没有为C#项目设置LangVersion

来自分类Dev

将CMake变量传递给C ++源代码

来自分类Dev

将CMake变量传递给C ++源代码