Créer un fichier makefile
contenant une règle
bonjour, qui affiche sur la sortie standard Bonjour,
comment ca va?
bonjour: @echo "Bonjour, comment ca va?"
L'utilisation du @
devant echo
rend la
commande "silencieuse", elle n'apparaît pas sur la sortie
standard.
Ajouter une règle bye qui affiche A bientot!
.
bye: @echo "A bientot!"
Le caractère précédent l'action est une tabulation. Pour cette raison, vous ne pouvez copier-coller à partir du HTML. Préférez le téléchargement du fichier du corrigé.
Créer une règle qui crée un fichier
modif.txt
dont le contenu vient du fichier
original.txt
(que vous
pouvez enregistrer grâce au bouton de droite) et qui
remplace (grâce à
sed
) les apparitions
de ILIB
par DILIB
.
modif.txt: original.txt sed -e 's/ILIB/DILIB/g' < original.txt > modif.txt
Le fichier modif.txt
depend du contenu du fichier
original.txt
, c'est pourquoi ce dernier
apparaît à droite de :
.
Créer une règle qui crée un fichier
modif2.txt
à partir de
original.txt
et
table.txt
, en utilisant la
table fournie pour modifier le fichier original.
modif2.txt: original.txt table.txt sed -f table.txt < original.txt > modif2.txt
Le fichier modif2.txt
dépend des contenus des
fichiers original.txt
et table.txt
(si
l'un des deux est modifié, la commande sed
sera
exécutée).
Ajouter une règle qui crée un fichier compte.txt
contenant le nombre de lignes du fichier
modif2.txt
.
compte.txt: modif2.txt wc -l < modif2.txt > compte.txt
Le fichier compte.txt
dépend du fichier
modif2.txt
(donc de sa règle, qui dépend de
original.txt
et de table.txt
). Donc si
on modifie table.txt
et qu'on tape make
compte.txt
, ou toute autre règle qui dépend directement
ou indirectement de table.txt, cette règle sera exécutée.
Créer une règle clean qui supprime les fichiers dont le
nom se termine par ~
.
clean: rm -f *~
Créer une règle all qui dépende de bonjour,
compte.txt, clean, et bye, mais qui
ne contient aucune commande (on peut quand même y mettre un
echo -- Make all: exécuté --
).
all: bonjour compte.txt clean bye @echo --- Make all: exécuté ---
On peut généraliser le @echo --- Make règle
exécuté ---
à toutes les règles, cela permet de mieux se
rendre compte de ce que le make a effectué.
Voir le fichier makefile complet.
Le copier-coller à partir du navigateur est insuffisant (les tabulations sont transformées en espaces), il faut donc utiliser le clic droit et sauvegarder le fichier en local.