使 make 能够扩展用户提供的宏

Enabling make to expand on user-supplied macro

有没有办法说服 make 接受用户提供的宏然后对其进行扩展?我的意思的一个简单示例是我希望用户能够发出:

> make CFLAGS='-g'

然后在 Makefile 的某处会是这样一行:

CFLAGS := $(CFLAGS) -O2

因此,总共 CFLAGS 的计算结果为 -g -O2。 AFAICT,如果用户发出该命令,makeCFLAGS 视为 -g 并且不会进一步触及它。当然,我可以让用户发出类似

的问题
> make CFIN='-g'

然后在 Makefile 中输入

CFLAGS := $(CFIN) -O2

但这对我来说似乎有点“笨拙”。

这样做:

CFLAGS :=
override CFLAGS := $(CFLAGS) -O2

第一个赋值阻止 CFLAGS 环境变量的内容被导入为同名的 Make 变量。如果您想要此行为,请删除第一行。