Makefile : 10 ans plus tard ... j'ai oublié la syntaxe

Makefile : 10 ans plus tard ... j'ai oublié la syntaxe - C++ - Programmation

Marsh Posté le 20-08-2006 à 02:44:16    

Après avoir gouté au bonheur de Ant et les fichiers build.xml, je fais un retour dans le passé avec les bons makefile moisis. Du coup j'ai une erreur de compile du makefile :
 
fichier makefile :
 


toto : toto.o  
    g++ -o toto toto.o -L "C:\\Program\ Files\\MinGW\\lib\\gcc\\mingw32\\3.4.2\\" -lstdc++
toto.o : toto.cpp  
    g++ -ggdb -c toto.cpp
all :  
    mingw32-make.exe toto  
clean :  
    -del toto.o


 
Erreur (après un build sous eclipse avec CDT):
 

mingw32-make.exe all  
mingw32-make.exe toto  
mingw32-make.exe[1]: Entering directory `D:/prog/workspace/toto'
mingw32-make.exe[1]: *** No rule to make target `\\Program Files\\MinGW\\lib\\gcc\\mingw32\\3.4.2\\"', needed by `toto.o'.  Stop.
mingw32-make.exe[1]: Leaving directory `D:/prog/workspace/toto'
mingw32-make.exe: *** [all] Error 2


 
Je ne comprends pas l'erreur sur la ligne marquée "Stop" :/
 
Quelqu'un peut corriger mon makefile ?  [:amandine75011]  
 


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 20-08-2006 à 02:44:16   

Reply

Marsh Posté le 20-08-2006 à 08:11:00    

Je suis pas sûr que tu puisses mettre des espaces avant le ":".
 
Et la dépendence entre all et toto peut être faite à l'intérieur du makefile ici.
 


toto: toto.o  
    g++ -o toto toto.o -L "C:\\Program\ Files\\MinGW\\lib\\gcc\\mingw32\\3.4.2\\" -lstdc++
 
toto.o: toto.cpp  
    g++ -ggdb -c toto.cpp
 
all: toto
 
clean:  
    -del toto.o


Reply

Marsh Posté le 20-08-2006 à 09:30:00    

mingw32-make.exe all  
mingw32-make.exe: *** No rule to make target `\\Program Files\\MinGW\\lib\\gcc\\mingw32\\3.4.2\\"', needed by `toto.o'.  Stop.


 
[:petrus75]


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 20-08-2006 à 09:46:38    

Il semble que make croit à tort que "C:\\...." soit un nom de fichier cible au lieu d'être un chemin vers les bibliothèques.
C'est peut-être un autre problème d'espace. Il faudrait peut-être essayer sans espace entre -L et "C:\\..."
J'ai remarqué que la syntaxe des makefile est très stricte sur les espaces et les tabulations. Mais le problème vient peut-être d'ailleurs.

Reply

Marsh Posté le 20-08-2006 à 09:58:14    

ça marche pas mieux.
 
NB : Tu confonds avec la syntaxe du -l (auquel on spécifie le nom de la librairie que l'on doit "coller" au -l). le -L est le chemin (path) où trouver les librairies...et là il ne faut pas coller [:spamafote]. Makefile powaah ! :o


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 20-08-2006 à 10:06:26    

Zarb. Et avec un backslash devant le ":" de C:\Program Files ?
Ou en utilisant directement la variable d'environnement "ProgramFiles" ?

Reply

Marsh Posté le 20-08-2006 à 10:15:03    

On peut remplacer les doubles antishlash "\\" par des slashs ordianires "/"
(J'utilise moi-même Dev-c++ qui tourne avec mingw. Dans mes makefiles pour Windows, de simples slashs "/" sont utilisés, et le nom du chemin de la bibliothèque est collé au -L majuscule)

Reply

Marsh Posté le 20-08-2006 à 10:23:01    

Bon je confirme que ceci marche :
 

toto: toto.o  
 g++ -o toto toto.o -L "C:\\Program\ Files\\MinGW\\lib\\gcc\\mingw32\\3.4.2\\" -lstdc++
toto.o: toto.cpp  
 g++ -ggdb -c toto.cpp
all: toto  
clean:  
 -del toto.o

 
 
L'erreur était qu'à la 2ème ligne il manquait une tabulation [:petrus75] ... merci le débuggeur de ton message explicite  :o  
 


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 20-08-2006 à 13:43:38    

Reply

Marsh Posté le 20-08-2006 à 13:45:44    

Ceci dit, si tu peux utiliser FTjam à la place, surtout ne te prive pas.[:petrus75]


Message édité par el muchacho le 20-08-2006 à 13:54:04

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 20-08-2006 à 13:45:44   

Reply

Marsh Posté le 20-08-2006 à 13:54:09    

make, sapu :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed