Может кто-нибудь объяснить, как использовать инструкции if-then и для циклов в Make-файлах? Я не могу найти хорошую документацию с примерами.Makefile If-Then Else и Loops
ответ
Условные формы
Простой
conditional-directive
text-if-true
endif
Умеренно комплекс
conditional-directive
text-if-true
else
text-if-false
endif
Более сложные
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
Условные директивы
Если Равное Синтаксис
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
If Not Equal Синтаксис
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Если определен Синтаксис
ifdef variable-name
Если не определено Синтаксис
ifndef variable-name
Еогеасп Функция
Еогеасп Синтаксис функции
$(foreach var, list, text)
Foreach Семантика
Для каждого пробела отделенный слово в «списке», переменная названа «вар» установлено значение этого слова и текст выполнен.
Вы пробовали GNU make documentation? В нем есть целый раздел об условностях с примерами.
Вот пример, если:
ifeq ($(strip $(OS)),Linux)
PYTHON = /usr/bin/python
FIND = /usr/bin/find
endif
Обратите внимание, что это происходит со словом предупреждения, что различные версии Марка имеют немного другой синтаксис, ни один из которых, кажется, очень хорошо документированы.
Является ли `$ (OS)` предопределенной переменной GNU make? Если да, то, возможно, вы должны добавить его [здесь] (http://stackoverflow.com/q/714100/912144). – Shahbaz 2012-11-16 10:08:08
Вы часто видите циклы, но они обычно не нужны. Вот пример того, как можно выполнить цикл for, не прибегая к оболочке.
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run [email protected] > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd [email protected] && $(MAKE)
Я добавляю «простые примеры». Документация в порядке, но человек - это абстрактные примеры! Для меня это еще вопрос. – Quickredfox 2012-06-12 23:23:24