Использование GNU Make 4.2.1
Я пишу Makefile, и я хочу использовать условный оператор для проверки make, находится ли он на указанном c удаленном сервере или нет. Я хотел бы сделать это, используя переменную окружения unix HOSTNAME
. Я также хочу, чтобы он запускался независимо от субдомена, поэтому я использую функцию make wildcard
.
ifeq ($(wildcard *.remote.server.com),$(HOSTNAME))
echo "ON REMOTE SERVER"
else
echo "NOT ON REMOTE SERVER"
endif
Похоже, это будет работать, но на моей локальной машине переменная окружения HOSTNAME
не установлена и тест ifeq
оценивается как true и печатает ON REMOTE SERVER
.
Это не имеет смысла для меня; *.remote.server.com
сравнивается с пустой строкой и должен оценить false и вывести NOT ON REMOTE SERVER
.
Я что-то упускаю из-за unix переменных среды, wildcard
, или создания условий, или всех трех?
Редактировать : Проблема решена. Узнал, что это не то место, где можно использовать функцию wildcard
. Вместо этого использовалось что-то похожее на следующую строку ifeq "$(shell hostname | sed -e 's/.*.remote.server.com/remote.server.com/')" "remote.server.com"
На основании этого ответа: Как использовать bash регулярное выражение внутри Makefile Target