我正在使用GNU-make Makefile构建具有多个目标(allclean和一些特定于项目的目标)的C项目。在调试过程中,我想将一些标志附加到单个构建中,而无需永久编辑Makefile(例如,添加调试符号或设置预处理器标志)。

过去,我已经按照以下步骤进行操作(使用调试符号示例):

make target CFLAGS+=-g

不幸的是,它没有附加到CFLAGS变量中,而是清除了该变量并阻止其编译。是否有一种干净的方法可以执行此操作,而无需定义附加到CFLAGSLDFLAGS末尾的虚拟变量?

最佳答案

查看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/

10-09 13:42