在make中取消设置变量时获取默认值

oli*_*bre 10 bash gnu-make variable-expansion

(编辑:基于@Michael反馈的问题更准确)

在bash中,我经常使用参数扩展:以下命令default value$VARNAME未设置时打印" " ,否则打印VARNAME内容.

echo ${VARNAME:-default value}  #if VARNAME empty => print "default value" 
echo ${VARNAME-default value}   #if VARNAME empty => print "" (VARNAME string)
Run Code Online (Sandbox Code Playgroud)

没有在GNU上找到类似的功能make.我终于在我写的Makefile:

VARNAME ?= "default value"
all:
        echo ${VARNAME}
Run Code Online (Sandbox Code Playgroud)

但我对这个解决方案不满意:它总是创建变量VARNAME,这可能会改变某些makefile上的行为.

有没有更简单的方法来获取未设置变量的默认值?

Mad*_*ist 17

如果你想使用GNU make变量的扩展(如果它是非空的)和默认值(如果它是空的,但是没有设置变量),你可以这样做:

all:
        echo $(or $(VARNAME),default value)
Run Code Online (Sandbox Code Playgroud)