我正在使用GNU make,在一个具有构建系统的项目中包含第三方库。当该构建系统调用时,如果在环境中定义了CFLAGS,则会变得混乱不堪。出于其他原因,我希望在我的环境中定义CFLAGS。该库的构建是从另一个makefile中调用的,所以我可以这样说:
3rdparty:
$(MAKE) -f Makefile.3rdparty
但我想确保在调用第三方Makefile时取消设置CFLAGS
。我能找到的最接近的方法是:
CFLAGS:=
但这仍然使CFLAGS
在环境中设置,只是为空字符串而已。除了做一些可怕的事情,比如说:
3rdparty:
bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"
是否有一种简单的方法可以从我的主makefile中“取消”CFLAGS变量,以便在调用第三方库时根本不存在于环境中?
unset CFLAGS && ...
,或者使用.ONESHELL
并将unset CFLAGS
添加为第一行配方。但是,如果变量为空也可以的话,您还可以添加一个目标特定的变量定义,例如3rdparty: CFLAGS:=
。 - fuujuhi