Quelqu'un peut-il expliquer comment utiliser les instructions if-then et les boucles for Makefiles? Je n'arrive pas à trouver de bonne documentation avec des exemples.
Formulaires conditionnels
Simple
conditional-directive
text-if-true
endif
Modérément complexe
conditional-directive
text-if-true
else
text-if-false
endif
Plus complexe
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
Directives conditionnelles
Si la syntaxe est égale
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
Si la syntaxe n'est pas égale
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Si la syntaxe est définie
ifdef variable-name
Si la syntaxe n'est pas définie
ifndef variable-name
pour chaque fonction
syntaxe de la fonction foreach
$(foreach var, list, text)
foreach Semantics
Pour chaque mot séparé par des espaces dans "liste", la variable nommée par "var" est définie sur ce mot et le texte est exécuté.
Voici un exemple si:
ifeq ($(strip $(OS)),Linux)
PYTHON = /usr/bin/python
FIND = /usr/bin/find
endif
Notez que cela vient avec un mot d'avertissement que les différentes versions de Make ont une syntaxe légèrement différente, dont aucune ne semble très bien documentée.
Avez-vous essayé la documentation GNU make ? Il a une section entière sur les conditions avec des exemples.
Vous voyez souvent des boucles, mais elles ne sont généralement pas nécessaires. Voici un exemple de la façon dont on pourrait effectuer une boucle for sans avoir recours au Shell
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run $@ > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd $@ && $(MAKE)