我可以做这个:
MY_VAR:=$(myvar)
Run Code Online (Sandbox Code Playgroud)
但是我要定义的是MY_VAR的值,如果未定义环境变量myvar,则使用该值。这可能吗?
就像是:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
Run Code Online (Sandbox Code Playgroud)
假设make是GNU Make,则继承的所有环境变量设置都会make自动注册为make变量设置。请参见环境中的6.10变量。所以你可以写,例如
制作文件(1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Run Code Online (Sandbox Code Playgroud)
运行方式如下:
$ make
echo default
default
Run Code Online (Sandbox Code Playgroud)
当myvar未在环境中定义; 并在定义后运行:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
Run Code Online (Sandbox Code Playgroud)
如果环境变量和make变量相同,为什么不呢?-还是比较简单。
制作文件(2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
Run Code Online (Sandbox Code Playgroud)
请参阅6.5设置变量
然后:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
Run Code Online (Sandbox Code Playgroud)