Como você está usando o GNU make , você pode usar o ?= operador :
FOO ?= bar
mas isso não lida com valores nulos (ou vazios) preexistentes. O seguinte lida com valores ausentes e vazios:
ifndef FOO
override FOO = bar
endif
test:
echo "$(FOO)"
.PHONY: test
(Certifique-se de que a linha 6 comece com uma guia real.)
Você chamaria isso usando
make FOO=blah
para definir um valor. make ou make FOO= terminará definindo FOO para bar ; você precisa de override para sobrescrever as variáveis definidas na linha de comando .