我正在使用GNU make,并且在项目中包含第三方库,如果在调用环境时在环境中定义了 CFLAGS
,则构建系统会变得狂暴 . 由于其他原因,我喜欢在我的环境中定义 CFLAGS
. 从另一个makefile调用库的构建,所以我说例如:
第3方: $(MAKE) -f Makefile.3rdparty
但我想确保当我在第三方Makefile上调用make时 CFLAGS
未设置 . 我能找到的最近的事情就是说:
CFLAGS:=
但是这仍然在环境中设置 CFLAGS
,它只是一个空字符串 . 除了做一些可怕的事情,比如说:
第三方: bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"
是否有一种简单的方法可以在我的主要makefile中使用 CFLAGS
变量,以便在调用第三方库时环境中根本不存在它?
4 回答
以下不适合您吗?
从版本3.82开始,make有一个“undefine”指令:
如果您需要为配方中的其他命令定义变量并且仅希望在子制动中定义变量,则可能会出现问题 . 另一个解决方案是使用env - 来调用submake并显式设置你需要在submake中设置的任何环境变量,例如:
在linux中取消设置环境变量 .
使用: