# Test 15 - Compilation avec sous-répertoires Ce test vérifie si `bake` et `make` peuvent compiler un fichier source situé dans un sous-répertoire (`src/`) et placer l'exécutable résultant dans un autre sous-répertoire (`build/`). ## 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-15-sous-repertoires/ ├── README.md # Ce fichier ├── bake/ │ ├── Bakefile # Fichier de règles pour bake │ ├── bakefile.jar # Exécutable de bake (JAR) │ ├── src/ │ │ ├── main.c # Fichier source principal │ ├── build/ # Dossier où sera placé l'exécutable └── make/ ├── Makefile # Fichier de règles pour make ├── src/ │ ├── main.c # Fichier source principal └── build/ # Dossier où sera placé l'exécutable ``` ## Contenu des fichiers de règles Les fichiers `Makefile` et `Bakefile` contiennent les règles suivantes : ```makefile CC = gcc CFLAGS = -Wall -Wextra build/main: src/main.c mkdir -p build $(CC) $(CFLAGS) -o build/main src/main.c ``` ## Objectif du test Ce test vérifie que `bake` et `make` : 1. Reconnaissent que le fichier source est situé dans un sous-répertoire (`src/`). 2. Créent le répertoire `build/` si celui-ci n'existe pas. 3. Compilent `main.c` et placent l'exécutable dans `build/main`. 4. Comparent les messages de sortie pour s'assurer que `bake` et `make` gèrent correctement les sous-répertoires. ## Comment exécuter le test ### Test manuel 1. Compilez avec Make : ```bash cd make make ``` L'exécutable `build/main` doit être généré. 2. Exécutez le programme compilé : ```bash ./build/main ``` Vous devriez voir `Hello from Bake & Make!` affiché. 3. Faites la même procédure avec Bake : ```bash cd bake java -cp bakefile.jar fr.monlouyan.bakefile.Main ``` 4. Comparez les résultats et les messages affichés. ## Résultats attendus - `bake` et `make` doivent compiler le programme sans erreur. - L'exécutable `build/main` doit être généré et exécutable. - `Hello from Bake & Make!` doit être affiché lors de l'exécution du programme.