我正在使用CMake在Windows(Visual Studio)和Linux机器(GCC)上构建我的项目.我想将一些代码标记为"仅调试",比如

#ifdef DEBUG
//some logging here
#endif

问题是:CMake"Debug"构建类型中的哪些编译器定义在所有平台上都可用?调试似乎不存在.(仅当构建类型为Debug时,我才希望具有日志(log)记录或其他功能.)

推荐答案

默认情况下,CMake会将-DNDEBUG添加到CMAKE_C_FLAGS_{RELEASE,MINSIZEREL}.所以,你可以用#ifndef NDEBUG.

C++相关问答推荐

插入元素后,Sizeof操作符无法正常工作

如何避免重新分配指针数组时,我们从一开始就不知道确切的大小

POSIX文件描述符位置

InetPton()函数无效的IP地址

VS代码C/C++扩展intellisense无法检测环境特定函数'

在#include中使用C宏变量

为什么在Linux(特别是Ubuntu 20.04LTS)上,POSIX共享内存对象在重启后仍然存在,然后突然变成了根用户?

C:scanf(%d&q;,...)输入只有一个减号

Malloc(sizeof(char[Length]))是否不正确?

显式地将值转换为它从函数返回的类型的含义是什么?

如何一次获取一个字符

如何在C中引发/处理自定义信号?

如何将常量char*复制到char数组

判断X宏的空性

不使用任何预定义的C函数进行逐位运算

条件跳转或移动取决于未初始化值(S)/未初始化值由堆分配创建(Realloc)

为什么GCC 13没有显示正确的二进制表示法?

try 判断长整数是否为素数

在哪里可以找到叮当返回码的含义?

如何用用户输入的多个字符串填充数组?