92 lines
2.7 KiB
Markdown
Raw Normal View History

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.