我可以这样做:
MY_VAR:=$(myvar)
但是我想要的是还为MY_VAR定义一个值,如果未定义环境变量myvar,则使用该值。这可能吗?
类似的东西:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
答案 0 :(得分:4)
假设make
是GNU Make,则make
继承的所有环境变量设置都会自动注册
作为make
变量设置。参见6.10 Variables from the Environment。所以你可以写,例如
制作文件(1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
运行方式如下:
$ make
echo default
default
在环境中未定义myvar
时;当它被定义时
像这样运行:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
如果环境变量和make
变量相同,为什么不呢? -还是比较简单。
制作文件(2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
然后:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
答案 1 :(得分:0)
您可以在下面尝试此代码。
MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi