2025-03-03 23:19:24 +01:00
# 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 ](#structure-du-test )
- [Contenu des fichiers de règles ](#contenu-des-fichiers-de-règles )
- [Objectif du test ](#objectif-du-test )
- [Comment exécuter le test ](#comment-exécuter-le-test )
- [Test manuel ](#test-manuel )
- [Résultats attendus ](#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
2025-03-10 13:21:31 +01:00
└── 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
2025-03-03 23:19:24 +01:00
```
## Contenu des fichiers de règles
Les fichiers `Makefile` et `Bakefile` contiennent les règles suivantes, incluant une cible `.PHONY` pour `clean` :
```makefile
.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` :
1. La cible `clean` doit toujours s'exécuter même si les fichiers à supprimer n'existent pas.
2. La compilation doit fonctionner normalement et générer l'exécutable `program` .
3. Comparer les messages de sortie pour s'assurer que `bake` et `make` gèrent `.PHONY` de la même manière.
## Comment exécuter le test
### Test manuel
1. Compilez avec Make :
```bash
cd make
make
```
2. Exécutez la cible `clean` :
```bash
make clean
```
Vous devez voir `Clean executed!` affiché.
3. Faites la même procédure avec Bake :
```bash
cd bake
java -cp bakefile.jar fr.monlouyan.bakefile.Main clean
```
4. Comparez les résultats et les messages affichés.
## Résultats attendus
- `make clean` et `bake clean` doivent exécuter la commande de nettoyage sans erreur.
- `Clean executed!` doit s'afficher après l'exécution de la cible `clean` .
- `make all` et `bake all` doivent compiler correctement le programme.
- Si `bake` ne gère pas correctement `.PHONY` , la cible `clean` pourrait ne pas s'exécuter ou ne pas fonctionner correctement.