是否可以在Makefile中“取消设置”环境变量?

时间:2010-02-02 22:38:08

标签: makefile environment-variables gnu-make

我正在使用GNU make,并且在项目中包含第三方库,如果在调用环境时在环境中定义CFLAGS,则构建系统会变得狂暴。由于其他原因,我喜欢在我的环境中定义CFLAGS。正在从另一个makefile调用库的构建,所以我说例如:

的3rdParty:     $(MAKE) -f Makefile.3rdparty

但是我想确保在第三方Makefile上调用make时CFLAGS未设置。我能找到的最近的事情就是说:

CFLAGS:=

但是这仍然会在环境中设置CFLAGS,它只是一个空字符串。距离 做一些可怕的事情,比如说:

的3rdParty:     bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

是否有一种简单的方法可以从我的主要makefile中“取消设置”CFLAGS变量,以便在调用第三方库时它在环境中根本不存在?

4 个答案:

答案 0 :(得分:25)

以下不适合您吗?

unexport CFLAGS
3rdparty:
        $(MAKE) -f Makefile.3rdparty

答案 1 :(得分:1)

从版本3.82开始,make有一个“undefine”指令:

undefine CFLAGS 

答案 2 :(得分:0)

如果您需要为配方中的其他命令定义变量并且不希望在子制动中定义变量,则可能会出现问题。另一个解决方案是使用env - 来调用submake并显式设置你需要在submake中设置的任何环境变量,例如:

env - PATH="$$PATH" LD_LIBRARY_PATH="$$LD_LIBRARY_PATH" $(MAKE) -f Makefile.3rdparty

答案 3 :(得分:-3)

在linux中取消设置环境变量。

使用:

export -n MY_ENV_VARIABLE