Test 10 - Gestion des cibles .PHONY
Ce test vérifie que bake
et make
gèrent correctement les cibles .PHONY
, qui ne correspondent pas à des fichiers mais à des commandes spécifiques comme clean
.
Sommaire
- Structure du test
- Contenu des fichiers de règles
- Objectif du test
- Comment exécuter le test
- Résultats attendus
Structure du test
test-10-phony/
├── README.md # Ce fichier
├── bake/
│ ├── Bakefile # Fichier de règles pour bake
│ ├── bakefile.jar # Exécutable de bake (JAR)
│ ├── main.c # Fichier source principal
│ ├── module.c # Fichier source du module
│ ├── module.h # Fichier d'en-tête
└── make/
├── Makefile # Fichier de règles pour make
├── main.c # Fichier source principal
├── module.c # Fichier source du module
└── module.h # Fichier d'en-tête
Contenu des fichiers de règles
Les fichiers Makefile
et Bakefile
contiennent les règles suivantes, incluant une cible .PHONY
pour clean
:
.PHONY: clean
all: program
program: main.o module.o
gcc -o program main.o module.o
main.o: main.c
gcc -c main.c -o main.o
module.o: module.c
gcc -c module.c -o module.o
clean:
rm -f program main.o module.o
echo "Clean executed!"
Objectif du test
Ce test vérifie que bake
et make
gèrent correctement les cibles .PHONY
:
- La cible
clean
doit toujours s'exécuter même si les fichiers à supprimer n'existent pas. - La compilation doit fonctionner normalement et générer l'exécutable
program
. - Comparer les messages de sortie pour s'assurer que
bake
etmake
gèrent.PHONY
de la même manière.
Comment exécuter le test
Test manuel
-
Compilez avec Make :
cd make make
-
Exécutez la cible
clean
:make clean
Vous devez voir
Clean executed!
affiché. -
Faites la même procédure avec Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main clean
-
Comparez les résultats et les messages affichés.
Résultats attendus
make clean
etbake clean
doivent exécuter la commande de nettoyage sans erreur.Clean executed!
doit s'afficher après l'exécution de la cibleclean
.make all
etbake all
doivent compiler correctement le programme.- Si
bake
ne gère pas correctement.PHONY
, la cibleclean
pourrait ne pas s'exécuter ou ne pas fonctionner correctement.