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

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 :

  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 :

    cd make
    make
    
  2. Exécutez la cible clean :

    make clean
    

    Vous devez voir Clean executed! affiché.

  3. Faites la même procédure avec Bake :

    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.