c++ - 使用 make 有条件地设置调试宏

标签 c++ build debugging makefile macros

在我的 C++ 项目中,我有一个约定,每当定义宏 DEBUG 时,调试 printf-esque 语句都会编译到可执行文件中。

为了表明我是否希望将这些编译成可执行文件,我通常会使用 -Dmacro 选项将宏名称传递给 gcc。所以,在 Makefile 中,我(目前)有:

CXXFLAGS += -g -I ../ -Wall -Werror -DDEBUG

但是,这不是很灵活;如果我不想在我的最终程序中使用调试语句,我必须修改 Makefile 以删除 -DDEBUG。

有没有一种方法可以修改 Makefile,这样我就可以在编译时通过传入另一个目标名称或命令行开关,有条件地选择是否使用 CXXFLAGS 中的 -D 进行编译?不确定我是怎么做到的。

最佳答案

您可以根据 makefile 中的目标有条件地定义其他变量。

all:    target
debug:  target

debug:  DEBUG=PLOP

target:
        @echo "HI $(DEBUG)"

现在:

> make
HI
>
> make debug
HI PLOP
>

关于c++ - 使用 make 有条件地设置调试宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440468/

相关文章:

c++ - 在运行时检测下溢/溢出错误?

C++ 为什么当它们 100% 看起来匹配时会出现错误 "no matching function"?

c++ - 从 C++ 到 C 释放 unique_ptr 时如何避免内存泄漏

c++ - 在 Windows 上首次安装 Qt 5

debugging - 如何在 WebStorm 中调试 Deno 应用程序

c++ - C++ 中的错误函数

java - eclipse:在 jar 导出中包含任意文件

google-chrome-extension - 打包 Chrome 扩展时更改输出文件

java - 幻影法?

c - 在链表错误中用字符串替换字符?