используйте переменную окружения, если она установлена, в противном случае используйте значение по умолчанию в make-файле - PullRequest
0 голосов
/ 19 ноября 2018

Я могу сделать это:

MY_VAR:=$(myvar)

Но я хочу также определить значение для MY_VAR, которое используется, если переменная окружения myvar не определена. Возможно ли это?

Что-то вроде:

# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Если 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
0 голосов
/ 19 ноября 2018

Вы можете попробовать этот код ниже.

MY_VAR=${HOSTNAME1}
if [ "$MY_VAR" = "" ]; then
MY_VAR="DEFAULT"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...