Makefile取消设置所有进一步配方的变量

时间:2015-01-08 14:28:35

标签: makefile

这里有一些问题询问如何取消设置变量 - 无论是通过unexport还是undefine。我正在使用GNU make 3.81,所以后者不是一个选项,但前者对我来说并不适用。例如,如果变量来自此makefile中其余配方的环境,我想取消设置该变量。这是一个示例makefile,如果从环境中设置VAR,我想要打印0,但是它打印1:

ifdef VAR
ifeq "$(origin VAR)" "environment"
unexport VAR
endif
endif

ifdef VAR
ALIVE := 1
else
ALIVE := 0
endif

all:
    @echo $(ALIVE)

在这种情况下如何让它打印0?那可能吗?

1 个答案:

答案 0 :(得分:3)

unexport只是告诉make不要将该变量导出到它运行的任何食谱中。这与变量是否在make 中定义无关,这与ifdef命令测试的内容无关。

ifdef仅检查变量是否具有非空值,因此您可以使用:

ifeq "$(origin VAR)" "environment"
VAR =
endif

ifdef VAR
ALIVE := 1
else
ALIVE := 0
endif

all:
        @echo $(ALIVE)

将其设置为空值,并在此处输入make以打印“0”。