Условные операторы в Make
ifeq | |
Логическое ИЛИ | |
Связанные статьи |
ifeq
ifeq ("A", "A") @echo "A=A" endif
A=A
Логическое ИЛИ в GNUmakefile
Оператор OR отсутствует в Make-файлах
Частично логическое OR в Make-файле можно заменить с помощью функции
filter
ifeq ("A", $(filter "A", "A" "B")) $(info "A = A") endif
filter возвращает совпадение между "A" и "A" "B" то есть "A" затем ifeq сравнивает "A" и "A"
make
A = A
Например можно проверить значение переменной на принадлежность к известному списку.
URL=eth1.ru ifeq ($(URL),$(filter $(URL), eth1.ru eth1.ru topbicycle.ru)) $(info URL $(URL) is among known list) else $(info URL $(URL) is not known) endif
make
URL eth1.ru is among known list
Пример
TAGS="rhel8 rhel7" $(info TAGS are $(TAGS)) PROFILE="deb" ifeq (${PROFILE}, $(filter ${PROFILE}, "deb" "debian")) override TAGS = ubuntu debian $(info MATCH NEW TAGS are $(TAGS)) else $(info NO MATCH TAGS are $(TAGS)) endif
make
TAGS are rhel8 rhel7
MATCH NEW TAGS are ubuntu debian