这里有一些问题询问如何取消设置变量 - 无论是通过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?那可能吗?
答案 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”。