Quelqu'un peut-il m'expliquer comment utiliser les instructions if-then et les boucles for dans Makefiles ? Je n'arrive pas à trouver une bonne documentation avec des exemples.
Réponses
Trop de publicités?Formes conditionnelles
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
Syntaxe If Equal
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
Syntaxe If Not Equal
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Syntaxe si définie
ifdef variable-name
Si non défini Syntaxe
ifndef variable-name
Fonction foreach
Syntaxe de la fonction foreach
$(foreach var, list, text)
foreach Sémantique
Pour chaque mot séparé par un espace dans "list", la variable nommée par "var" est définie par ce mot et le texte est exécuté.
Avez-vous essayé le Documentation de GNU make ? Il comporte une section entière sur les conditionnels avec des exemples.
On voit souvent des boucles for, mais elles ne sont généralement pas nécessaires. Voici un exemple de la façon dont on peut exécuter une boucle for sans recourir au shell
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run $@ > $@.out
SUBDIRS = snafu fubar
$(SUBDIRS):
cd $@ && $(MAKE)