Forum Clubic

Petit probleme avec makefile

Salut

J ai fait un Makefile qui ne fonctionne que si je le lance 2 fois, le voici

obj = Stack.o MyStack.o
src = Stack.cpp MyStack.cpp
prog.exe : $(obj)
	g++  -o Stack $(obj)

$(obj) : $(src)
	g++ -c -Wall $(obj) $(src)

Au premier lancement les fichiers Stack.o MyStack.o sont crées mais j obtiens :
gcc.exe: Stack.o: No such file or directory
gcc.exe: MyStack.o: No such file or directory
make: *** [Stack.o] Error 1

Et au deuxième le .exe est crée

Merci.
Edité le 26/03/2009 à 15:21

ça ne m’étonne guère : il est faux.

obj = Stack.o MyStack.o
src = Stack.cpp MyStack.cpp
prog.exe : $(obj)
	g++ -o Stack $(obj)

%.o: %.c
	g++ -c -Wall -o $@ $<

cf. bellet.info… par exemple

Pour ne pas te laisser la gueule béante face à ma réponse, voici l’explication :

$(obj) : $(src)
	g++ -c -Wall $(obj) $(src)

Se traduit en gros en :

Stack.o MyStack.o: Stack.cpp MyStack.cpp
  g++ -c -Wall Stack.o MyStack.o Stack.cpp MyStack.cpp

Et je doute que cela ne marche.

Le plus étonnant c est que ça marche : )
Mais il faut lancer make 2 fois

Je vais essayer le lien, merci.

Je dirais que l’espace est considéré comme une autre cible, donc ça passe (et Makefile n’aime pas les espaces dans les noms de fichier).

Je pense que gcc prend les *.o comme des fichiers objets au lieu d’aller les générer comme tel, ce qui n’est pas ce que tu veux.

Salut,

Voila… je pense que comme ça c est écrit correctement

prog.exe : Stack.o MyStack.o
	g++ -o Stack Stack.o MyStack.o
Stack.o : Stack.cpp
	g++ -c Stack.o Stack.cpp
MyStack.o : MyStack.cpp
	g++ -c MyStack.o MyStack.cpp

Mais je dois toujours lancer make 3 fois.
Je n ai pas trouve parmi les tuto ou était le problème.

Merci.

ca y est…

Merci.

aussi. Mais ma méthode t’évite de te casser le cul pour chaque *.c que tu ajouteras :wink: