Если make
- это GNU Make, все настройки переменных среды, унаследованные make
, будут автоматически зарегистрированы
как make
переменные настройки. См. 6.10 Переменные из среды . Так что вы можете просто написать, например,
Makefile (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
Который работает как:
$ make
echo default
default
когда myvar
не определен в среде; и когда это определено,
работает как:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
А если переменная окружения и переменная make
совпадают - а почему бы и нет? - еще проще.
Makefile (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
См. 6.5. Установка переменных
Тогда:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault