Test 07 - Dépendances multiples
Ce test vérifie que si un fichier .c dépend de plusieurs fichiers .h, toute modification d'un .h entraîne la recompilation du fichier .c concerné.
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-07-dependances/
├── 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 :
CC = gcc
CFLAGS = -Wall -Wextra -Werror
# Règle par défaut
all: program
# Compilation de l'exécutable
program: main.o module.o
	$(CC) $(CFLAGS) -o program main.o module.o
# Compilation des fichiers .c en .o
main.o: main.c module.h
	$(CC) $(CFLAGS) -c main.c -o main.o
module.o: module.c module.h
	$(CC) $(CFLAGS) -c module.c -o module.o
# Nettoyage des fichiers objets et de l'exécutable
clean:
	rm -f main.o module.o program
# Nettoyage complet
mrproper: clean
# Force la recompilation
rebuild: clean all
Objectif du test
Ce test vérifie que bake et make prennent en compte correctement les dépendances multiples :
- Modifier le fichier 
module.hdoit entraîner la recompilation demain.oetmodule.o. - Exécuter 
makeoubakesans modification ne doit rien recompiler. - Comparer les messages de sortie pour s'assurer que 
bakeetmakegèrent les dépendances de manière similaire. 
Comment exécuter le test
Test manuel
- 
Compilez avec Make :
cd make make - 
Modifiez
module.h:echo "// Modification pour test" >> module.h - 
Recompilez avec Make :
make - 
Faites la même procédure avec Bake :
cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main - 
Comparez les résultats et les messages affichés.
 
Résultats attendus
- Les deux outils devraient détecter les modifications de 
module.het recompilermain.oetmodule.o. - Sans modification, 
bakeetmakene doivent pas relancer la compilation. - Les messages de sortie devraient indiquer clairement quelles parties du programme ont été recompilées.
 - Si 
bakene gère pas correctement les dépendances, il pourrait ne pas recompiler les fichiers nécessaires ou les recompiler inutilement.