Условные операторы в 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), urn.su 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

Похожие статьи
make
Основы make
PHONY
CURDIR
shell
wget + make
Переменные в Make файлах
ifeq: Условные операторы
filter
-c: Компиляция
Linux
Bash
C
C++
C++ Header файлы
Configure make install
DevOps
Docker
OpenBSD
Errors make