在我的 C++ 项目中,我有一个约定,每当定义宏 DEBUG
时,调试 printf-esque 语句都会编译到可执行文件中。
为了表明我是否希望将这些编译成可执行文件,我通常会使用 -D
macro 选项将宏名称传递给 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/