Search code examples
bashgnu-makevariable-expansion

get a default value when variable is unset in make


(edit: question more accurate based on @Michael feedback)

In bash, I often use parameter expansion: the following commands print "default value" when $VARNAME is unset, otherwise it prints the VARNAME content.

echo ${VARNAME:-default value}  #if VARNAME empty => print "default value" 
echo ${VARNAME-default value}   #if VARNAME empty => print "" (VARNAME string)

I did not find a similar feature on GNU make. I finally wrote in my Makefile:

VARNAME ?= "default value"
all:
        echo ${VARNAME}

But I am not happy with this solution: it always creates the variable VARNAME and this may change the behavior on some makefiles.

Is there a simpler way to get a default value on unset variable?


Solution

  • If you want to use the expansion of a GNU make variable if it is non-empty and a default value if it is empty, but not set the variable, you can do something like this:

    all:
            echo $(or $(VARNAME),default value)