Corrigé du TP make

Énoncé

Créer un fichier makefile contenant une règle bonjour, qui affiche sur la sortie standard Bonjour, comment ca va?

Solution

bonjour:
	@echo "Bonjour, comment ca va?"

L'utilisation du @ devant echo rend la commande "silencieuse", elle n'apparaît pas sur la sortie standard.


Énoncé

Ajouter une règle bye qui affiche A bientot!.

Solution

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é.


Énoncé

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.

Solution

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 :.


Énoncé

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.

Solution

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).


Énoncé

Ajouter une règle qui crée un fichier compte.txt contenant le nombre de lignes du fichier modif2.txt.

Solution

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.


Énoncé

Créer une règle clean qui supprime les fichiers dont le nom se termine par ~.

Solution

clean:
	rm -f *~

Énoncé

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é --).

Solution

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.


Philippe.Houdry@inist.fr