Makefile pour exercice P9

Makefile pour exercice P9

par Thomas Stucker,
Number of replies: 4

Bonjour,

Pour l'exercice P9, j'ai écrit un makefile comme présenté dans le cours, avec des instructions du type

Vecteur.o : Vecteur.cc Vecteur.h

J'ai mis le fichier makefile dans un dossier "ExerciceP9", qui contient aussi le fichier exerciceP9.cc. Quand j'effectue la commande make, j'obtient une erreur : 

make: *** No rule to make target 'Vecteur.h', needed by 'exerciceP9.o'. Stop.

Le fichier Vecteur.h est dans un autre dossier qu' "ExerciceP9". Pour que le makefile puisse fonctionner, je suis obligé de copier Vecteur.h et Vecteur.cc dans le dossier "ExerciceP9" pendant que je travaille dessus. J'ai le même problème pour tous les autres fichiers dont j'ai besoin, et du coup je dois à chaque fois copier une dizaine de fichiers dans le dossier "ExerciceP9" pour que tout fonctionne.

Ma question est : est-il possible d'écrire un makefile qui fasse le travail tout seul, c'est-à-dire qui aille lui-même chercher les fichiers là où ils sont pour les compiler ?

Merci beaucoup pour votre aide

Thomas Stucker

In reply to Thomas Stucker

Re: Makefile pour exercice P9

par Josué Antoine Maechling,

C'est tout à fait normal que le makefile ne puisse rien faire...tu ne lui dis pas où sont les fichiers !

Soit tu te simplifies la tâche et tu mets tous tes fichiers dans le même dossier (ce qui serait peut-être recommandable vu l'exercice où tu es si tu veux espérer finir le projet), soit tu dois indiquer pour chaque fichier où il est avec par exemple /Vecteur/Vecteur.h ou ../Vecteur/Vecteur.h si ton makefile n'est pas dans le dossier général mais dans un sous dossier. Il faut aussi indiquer dans le makefile que ces dossiers sont utilisés. Pour la syntaxe j'ai trouvé ça qui peut t'aider (ça change un peu de ce que j'ai dit mais ça peut marcher):

https://www.quora.com/How-do-I-write-a-makefile-in-C++-to-include-files-from-different-directories

ne commence à faire ça que si tu as le temps !

ah et si tu fais ça tu risques de devoir aussi faire un makefile pour chaque sous-dossier pour te simplifier la tâche

In reply to Josué Antoine Maechling

Re: Makefile pour exercice P9

par Thomas Stucker,

Merci, j'ai pu faire ce que je voulais. Par contre, pour que ça fonctionne, j'ai du indiquer la position de mes fichiers .h dans les include, par exemple :

#include "../ClasseVecteur/Vecteur.h"

où ClasseVecteur est le dossier qui contient Vecteur.h. Est-ce que c'est considéré comme de la mauvaise programmation (comme les variables globales et les friend) où bien c'est toléré ?

Merci