Makefile 启用make以在用户提供的宏上展开

Makefile 启用make以在用户提供的宏上展开,makefile,gnu-make,Makefile,Gnu Make,有没有办法说服make接受用户提供的宏,然后扩展它?我的意思的一个简单示例是,我希望用户能够发布: > make CFLAGS='-g' 然后在Makefile中的某个地方会有一行如下所示: CFLAGS := $(CFLAGS) -O2 因此,总的来说,CFLAGS将计算为-g-O2。AFAICT,如果用户发出该命令,make将CFLAGS视为-g,并且不会进一步触摸它。当然,我可以有用户问题,比如 > make CFIN='-g' 然后在Makefile中放入 CFLAGS

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

> make CFLAGS='-g'
然后在
Makefile
中的某个地方会有一行如下所示:

CFLAGS := $(CFLAGS) -O2
因此,总的来说,
CFLAGS
将计算为
-g-O2
。AFAICT,如果用户发出该命令,
make
CFLAGS
视为
-g
,并且不会进一步触摸它。当然,我可以有用户问题,比如

> make CFIN='-g'
然后在Makefile中放入

CFLAGS := $(CFIN) -O2
但这对我来说似乎有点“笨重”。

这样做:

CFLAGS :=
override CFLAGS := $(CFLAGS) -O2
第一个赋值防止将
CFLAGS
环境变量的内容作为具有相同名称的Make变量导入。如果需要此行为,请删除第一行