如果设置,则使用环境变量,否则在makefile中使用默认值

时间:2018-11-19 07:15:52

标签: bash makefile

我可以这样做:

MY_VAR:=$(myvar)

但是我想要的是还为MY_VAR定义一个值,如果未定义环境变量myvar,则使用该值。这可能吗?

类似的东西:

# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue

2 个答案:

答案 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)

请参见6.5 Setting Variables

然后:

$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault

答案 1 :(得分:0)

您可以在下面尝试此代码。

MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi