Makefile

Discutez d'informatique ici !
Mathusalem
Membre Irrationnel
Messages: 1837
Enregistré le: 14 Sep 2008, 03:41

Makefile

par Mathusalem » 16 Mar 2010, 22:31

Bonjour !
Je programme en C++ sous Ubuntu.
J'ai plusieurs fichiers. Pour l'instant, j'ai deux objets :

une classe Vecteur.
une classe Matrices.

J'ai donc : Vecteur.cc, Vecteur.h, Matrices.cc, Matrices.h

J'ai considéré les matrices comme des vector < Vecteur >, c'est à dire un tableau d'elements de la classe Vecteur. Pour ce faire, j'ai dû évidemment inclure Vecteur.h dans Matrices.h, afin de déclarer ma classe.

J'ai donc : Vecteur.h inclu dans Matrices.h et Matrices.h inclu dans Matrices.cc

J'aimerais faire un testVecteur.cc qui me teste si la surcharge d'opérateurs, méthodes etc.. fonctionnent comme il faut.
Tous les fichiers séparement compilent comme il faut, il n'y a pas de soucis. Lorsque parcontre je veux faire "make" dans le terminal, afin de pouvoir exécuter mon testMatrices.cc, j'obtiens un message d'erreur style:

Matrices.cc:(.text+0xc4): undefined reference to `Vecteur::operator[](int const&) const'
etc...

En gros, j'ai l'impression qu'il capte pas où il doit aller pécher certaines informations (par exemple là, il reconnait pas une surcharge d'opérateurs dans le fichier Vecteur.h)

Voici mon makefile:
--------------------------------
all:testMatrices

Vecteur.o: Vecteur.cc Vecteur.h
g++ -c Vecteur.cc -o Vecteur.o
testMatrices: Matrices.o testMatrices.o
g++ Matrices.o testMatrices.o -o testMatrices
Matrices.o: Matrices.cc Matrices.h Vecteur.h
g++ -c Matrices.cc -o Matrices.o
testMatrices.o: testMatrices.cc Matrices.h
g++ -c testMatrices.cc -o testMatrices.o

--------------------------------

Qu'est-ce qui est faux ?
Merci d'avance,
Math

PS: J'ai bien des "Tab" pour les commandes.



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 17 Mar 2010, 07:01

salut,

peux-tu montrer tes sources?
pour ma part je parie sur un problème de signature (genre d'un coté t'as un int &) et de l'autre un (const int &)...
Mais bon, cqu'une idée.
la vie est une fête :)

Mathusalem
Membre Irrationnel
Messages: 1837
Enregistré le: 14 Sep 2008, 03:41

par Mathusalem » 17 Mar 2010, 07:43

fatal_error a écrit:salut,

peux-tu montrer tes sources?
pour ma part je parie sur un problème de signature (genre d'un coté t'as un int &) et de l'autre un (const int &)...
Mais bon, cqu'une idée.


Je t'ai envoyé les sources en MP.
Mais donc à ton avis, aucun problème dans le makefile ?

A+
Math

EDIT: J'ai remodifié mon Makefile, y avait des dépendances qui manquaient.
----------------
CC = g++
CXX = g++

all: testVecteur testMatrice

Vecteur.o: Vecteur.cc Vecteur.h

testVecteur.o: testVecteur.cc Vecteur.h

testVecteur: testVecteur.o Vecteur.o

Matrice.o: Matrice.cc Matrice.h Vecteur.h

testMatrice.o: testMatrice.cc Matrice.h Vecteur.h

testMatrice: testMatrice.o Matrice.o Vecteur.o
-------------------

Mais il me crache ceci :

make: *** No rule to make target `testMatrices.cc', needed by `testMatrices.o'. stop.

??

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 17 Mar 2010, 11:45

re,

pour ma part j'ai aucun problème pour compiler.
J'ai juste rajouté un point d'entrée int main(){return 0;} dans un fichier cpp, mais tu prendras bien sur de faire un fichier main.cpp (ou main.cc vu que tu les appeles cc), pis ca compile.

Voila mon Makefile
Code: Tout sélectionner
ECHO = @echo

RM = @rm

GCC = @g++

EDL = g++

RMFLAGS = -f

CCFLAGS =

LDFLAGS =

LIBS =

OBJS = Vecteur.o Matrices.o

EXE = matrices



$(EXE): $(OBJS)

   $(ECHO) Edition des liens

   $(EDL) $(OBJS) -o $(EXE) $(LIBS)

   $(ECHO) Executable pret



%.o : %.cpp %.h

   $(ECHO) Compilation de $/dev/null

   @make 1>/dev/null



et ma sortie console
Code: Tout sélectionner
:~/junk/mfMatrices$ make
Compilation de Matrices.cpp
Edition des liens
g++ Vecteur.o Matrices.o -o matrices
Executable pret
la vie est une fête :)

Mathusalem
Membre Irrationnel
Messages: 1837
Enregistré le: 14 Sep 2008, 03:41

par Mathusalem » 17 Mar 2010, 16:49

J'avais oublié le "s" de MatriceS, testMatriceS dans le makefile.
Problème réglé, merci pour ton aide.

A+

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 9 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite