Créer un fichier Makefile
contenant une règle bonjour, qui affiche sur la sortie standard Bonjour, comment ca va?
make 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!
.
make bye: @echo "A bientot!"
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
.
make 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.
make 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 ligne à table.txt
pour remplacer CNRS
par Centre National de la Recherche Scientifique
.
Puis relancer make modif2.txt
pour vérifier que la commande a bien été exécutée.
Ajouter une règle qui crée un fichier compte.txt
contenant le nombre de lignes du fichier modif2.txt
.
make 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
).
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 ~
.
make clean: rm -f *~
> Si vous utilisez un lecteur Samba (probable à l'INIST), vous risquez une > désynchronisation entre les fichiers enregistrés par le lecteur Samba et la > date de lancement de
make
(il est arrivé que les fichiers aient une à deux > minutes d'avance).
touch
, qui > remet un fichier à l'heure courante du shell, mais seulement sur les fichiers > qui viennent d'être modifiés/créés!
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é --
).
Remarques :
touch
, qui change la date de modification du fichier qu'elle prend en paramètre), les commandes de chacune de ces règles sont exécutées (voir le comportement de make all
après avoir tapé touch original.txt
, ou après avoir ajouté du texte à original.txt
).make 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é.
Pour ceux qui ne l'ont pas fait : modifier le fichier original.txt
, et relancer la règle all
.