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

In bash, I often use [parameter expansion](http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html): 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](http://www.gnu.org/software/make/manual/html_node/Using-Variables.html) 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?**