More typos

This commit is contained in:
Cedric HT 2016-01-19 12:36:33 +01:00
parent 8cff05396e
commit 5220d97320

View File

@ -37,24 +37,24 @@ l'implémentation standard : GNU make.
# Une règle. Elle ne sera exécutée que si fichier0.txt n'existe pas. # Une règle. Elle ne sera exécutée que si fichier0.txt n'existe pas.
fichier0.txt: fichier0.txt:
echo "truc" > fichier0.txt echo "truc" > fichier0.txt
# Même les commentaires sont transférés dans le terminal. # Même les commentaires sont transférés dans le terminal.
# Cette règle ne sera exécutée que si fichier0.txt est plus récent que # Cette règle ne sera exécutée que si fichier0.txt est plus récent que
# fichier1.txt. # fichier1.txt.
fichier1.txt: fichier0.txt fichier1.txt: fichier0.txt
cat fichier0.txt > fichier1.txt cat fichier0.txt > fichier1.txt
# Utiliser la même syntaxe que dans un terminal. # Utiliser la même syntaxe que dans un terminal.
@cat fichier0.txt >> fichier1.txt @cat fichier0.txt >> fichier1.txt
# @ empêche l'affichage de la sortie texte d'une commande. # @ empêche l'affichage de la sortie texte d'une commande.
-@echo 'hello' -@echo 'hello'
# - signifie que la règle devrait continuer à s'exécuter si cette commande # - signifie que la règle devrait continuer à s'exécuter si cette commande
# échoue. # échoue.
# Une règle peut avoir plusieurs cibles et plusieurs dépendances. # Une règle peut avoir plusieurs cibles et plusieurs dépendances.
fichier2.txt fichier3.txt: fichier0.txt fichier1.txt fichier2.txt fichier3.txt: fichier0.txt fichier1.txt
touch fichier2.txt touch fichier2.txt
touch fichier3.txt touch fichier3.txt
# Make affichera un avertissement si le makefile comporte plusieurs règles pour # Make affichera un avertissement si le makefile comporte plusieurs règles pour
# une même cible. Cependant les règles vides ne comptent pas, et peuvent être # une même cible. Cependant les règles vides ne comptent pas, et peuvent être
@ -71,7 +71,7 @@ all: maker process
# La déclaration des règles peut être faite dans n'importe quel ordre. # La déclaration des règles peut être faite dans n'importe quel ordre.
maker: maker:
touch ex0.txt ex1.txt touch ex0.txt ex1.txt
# On peut transformer une règle en fausse règle grâce à la cible spéciale # On peut transformer une règle en fausse règle grâce à la cible spéciale
# suivante : # suivante :
@ -89,17 +89,17 @@ ex0.txt ex1.txt: maker
# Utilise un wildcard pour des noms de fichier # Utilise un wildcard pour des noms de fichier
process: fichier*.txt process: fichier*.txt
@echo $^ # $^ est une variable contenant la liste des dépendances de la @echo $^ # $^ est une variable contenant la liste des dépendances de la
# cible actuelle. # cible actuelle.
@echo $@ # $@ est le nom de la cible actuelle. En cas de cibles @echo $@ # $@ est le nom de la cible actuelle. En cas de cibles
# multiples, $@ est le nom de la cible ayant causé l'exécution # multiples, $@ est le nom de la cible ayant causé l'exécution
# de cette règle. # de cette règle.
@echo $< # $< contient la première dépendance. @echo $< # $< contient la première dépendance.
@echo $? # $? contient la liste des dépendances qui ne sont pas à jour. @echo $? # $? contient la liste des dépendances qui ne sont pas à jour.
@echo $+ # $+ contient la liste des dépendances avec d'éventuels @echo $+ # $+ contient la liste des dépendances avec d'éventuels
# duplicatas, contrairement à $^. # duplicatas, contrairement à $^.
@echo $| # $| contient la liste des cibles ayant préséance sur la cible @echo $| # $| contient la liste des cibles ayant préséance sur la cible
# actuelle. # actuelle.
# Même si la définition de la règle est scindée en plusieurs morceaux, $^ # Même si la définition de la règle est scindée en plusieurs morceaux, $^
# listera toutes les dépendances indiquées. # listera toutes les dépendances indiquées.
@ -113,33 +113,33 @@ process: ex1.txt fichier0.txt
# En utilisant le pattern matching, on peut par exemple créer des règles pour # En utilisant le pattern matching, on peut par exemple créer des règles pour
# convertir les fichiers d'un certain format dans un autre. # convertir les fichiers d'un certain format dans un autre.
%.png: %.svg %.png: %.svg
inkscape --export-png $^ inkscape --export-png $^
# Make exécute une règle même si le fichier correspondant est situé dans un sous # Make exécute une règle même si le fichier correspondant est situé dans un sous
# dossier. En cas de conflit, la règle avec la meilleure correspondance est # dossier. En cas de conflit, la règle avec la meilleure correspondance est
# choisie. # choisie.
small/%.png: %.svg small/%.png: %.svg
inkscape --export-png --export-dpi 30 $^ inkscape --export-png --export-dpi 30 $^
# Dans ce type de conflit (même cible, même dépendances), make exécutera la # Dans ce type de conflit (même cible, même dépendances), make exécutera la
# dernière règle déclarée... # dernière règle déclarée...
%.png: %.svg %.png: %.svg
@echo cette règle est choisie @echo cette règle est choisie
# Dans ce type de conflit (même cible mais pas les mêmes dépendances), make # Dans ce type de conflit (même cible mais pas les mêmes dépendances), make
# exécutera la première règle pouvant être exécutée. # exécutera la première règle pouvant être exécutée.
%.png: %.ps %.png: %.ps
@echo cette règle n\'est pas choisie si *.svg et *.ps sont présents @echo cette règle n\'est pas choisie si *.svg et *.ps sont présents
# Make a des règles pré établies. Par exemple, il sait comment créer la cible # Make a des règles pré établies. Par exemple, il sait comment créer la cible
# *.o à partir de *.c. # *.o à partir de *.c.
# Les makefiles plus vieux utilisent un matching par extension de fichier. # Les makefiles plus vieux utilisent un matching par extension de fichier.
.png.ps: .png.ps:
@echo cette règle est similaire à une règle par pattern matching @echo cette règle est similaire à une règle par pattern matching
# Utiliser cette syntaxe pour déclarer une règle comme règle avec matching par # Utiliser cette règle spéciale pour déclarer une règle comme ayant un
# extension de fichier. # matching par extension de fichier.
.SUFFIXES: .png .SUFFIXES: .png
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
@ -152,10 +152,10 @@ variable = Ted
variable2="Sarah" variable2="Sarah"
echo: echo:
@echo $(variable) @echo $(variable)
@echo ${variable2} @echo ${variable2}
@echo $variable # Cette syntaxe signifie $(n)ame et non pas $(variable) ! @echo $variable # Cette syntaxe signifie $(n)ame et non pas $(variable) !
@echo $(variable3) # Les variables non déclarées valent "" (chaîne vide). @echo $(variable3) # Les variables non déclarées valent "" (chaîne vide).
# Les variables sont déclarées de 4 manières, de la plus grande priorité à la # Les variables sont déclarées de 4 manières, de la plus grande priorité à la
# plus faible : # plus faible :
@ -177,21 +177,21 @@ variable4 +=gris
# Assignations de variable pour les règles correspondant à un pattern # Assignations de variable pour les règles correspondant à un pattern
# (spécifique à GNU make). # (spécifique à GNU make).
*.png: variable2 = Sara # Pour toutes les règles correspondant à *.png, et tous *.png: variable2 = Sara # Pour toutes les règles correspondant à *.png, et tous
# leurs descendants, la variable variable2 vaudra # leurs descendants, la variable variable2 vaudra
# "Sara". # "Sara".
# Si le jeux des dépendances et descendances devient vraiment trop compliqué, # Si le jeux des dépendances et descendances devient vraiment trop compliqué,
# des inconsistances peuvent survenir. # des incohérences peuvent survenir.
# Certaines variables sont prédéfinies par make : # Certaines variables sont prédéfinies par make :
affiche_predefinies: affiche_predefinies:
echo $(CC) echo $(CC)
echo ${CXX} echo ${CXX}
echo $(FC) echo $(FC)
echo ${CFLAGS} echo ${CFLAGS}
echo $(CPPFLAGS) echo $(CPPFLAGS)
echo ${CXXFLAGS} echo ${CXXFLAGS}
echo $(LDFLAGS) echo $(LDFLAGS)
echo ${LDLIBS} echo ${LDLIBS}
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
# Variables : le retour # Variables : le retour
@ -202,11 +202,11 @@ affiche_predefinies:
# manière d'assigner des variables pour qu'elles ne soient évaluées qu'une seule # manière d'assigner des variables pour qu'elles ne soient évaluées qu'une seule
# fois seulement. # fois seulement.
var := wesh var := A B C
var2 ::= $(var) mec # := et ::= sont équivalents. var2 ::= $(var) D E F # := et ::= sont équivalents.
# Ces variables sont évaluées procéduralement (i.e. dans leur ordre # Ces variables sont évaluées procéduralement (i.e. dans leur ordre
# d'apparition), contrairement au règles par exemple ! # d'apparition), contrairement aux règles par exemple !
# Ceci ne fonctionne pas. # Ceci ne fonctionne pas.
var3 ::= $(var4) et fais de beaux rêves var3 ::= $(var4) et fais de beaux rêves
@ -225,9 +225,9 @@ fichiers_source = $(wildcard *.c */*.c)
fichiers_objet = $(patsubst %.c,%.o,$(fichiers_source)) fichiers_objet = $(patsubst %.c,%.o,$(fichiers_source))
ls: * src/* ls: * src/*
@echo $(filter %.txt, $^) @echo $(filter %.txt, $^)
@echo $(notdir $^) @echo $(notdir $^)
@echo $(join $(dir $^),$(notdir $^)) @echo $(join $(dir $^),$(notdir $^))
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
# Directives # Directives
@ -240,14 +240,14 @@ include meuh.mk
sport = tennis sport = tennis
report: report:
ifeq ($(sport),tennis) # Il y a aussi ifneq. ifeq ($(sport),tennis) # Il y a aussi ifneq.
@echo 'jeu, set et match' @echo 'jeu, set et match'
else else
@echo "C'est pas ici Wimbledon ?" @echo "C'est pas ici Wimbledon ?"
endif endif
truc = true truc = true
ifdef $(truc) # Il y a aussi ifndef. ifdef $(truc) # Il y a aussi ifndef.
machin = 'salut' machin = 'salut'
endif endif
``` ```