我正在使用GNU-make Makefile构建具有多个目标(all
,clean
和一些特定于项目的目标)的C项目。在调试过程中,我想将一些标志附加到单个构建中,而无需永久编辑Makefile(例如,添加调试符号或设置预处理器标志)。
过去,我已经按照以下步骤进行操作(使用调试符号示例):
make target CFLAGS+=-g
不幸的是,它没有附加到
CFLAGS
变量中,而是清除了该变量并阻止其编译。是否有一种干净的方法可以执行此操作,而无需定义附加到CFLAGS
和LDFLAGS
末尾的虚拟变量? 最佳答案
查看override directive。您可能需要修改一次makefile,但是它应该执行您想要的操作。
示例makefile:
override CFLAGS += -Wall
app: main.c
gcc $(CFLAGS) -o app main.c
命令行示例:
$ make
gcc -Wall -o app main.c
$ make CFLAGS=-g
gcc -g -Wall -o app main.c
关于c - 通过命令行附加到GNU make变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2129391/