ton commobject.hpp ne doit pas se trouver dans le dossier courant, qui est bien entendu l'endroit ou tous ces fichiers sont recherchés.
sinon, je sais pas.
pour clean, il croit que clean est un fichier.
il faut lui dire que "clean" n'est pas un fichier en ajoutant cette règle comme dépendance de ".PHONY"
.PHONY: clean
#vieuxsouvenirs#
Zeph Le 05/11/2011 à 23:44 comme dit squalyl, pas besoin de t'embêter, mingw32-make (rah, pourquoi ce nom ?!) dans un cmd t'évitera d'avoir à bidouiller des pseudo-shells unix sous Windows et autres hérésies ^^

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
ps -> je haie les softs qui gèrent mal les espaces au parsing. J'ai perdu 1/2 heure à cause d'espaces à la place de tabulations, et d'un espace après un semicolon. Super fin :/
ps2 -> Y a-t-il des macros définies par make pour savoir sur quel OS on se trouve ? genre OSX, WIN32, LINUX ? Non ça n'existe pas ça ?
sur windows t'as la variable d'environnement OS qui vaut Windows_NT (voir la commande set) et pas sous linux, sinon à part ça, je crois pas ^^
du pseudocode makefile a corriger
avant les règles:
ifeq($OS,Windows_NT)
DELETE=del /y
else
DELETE=rm -f
endif
et dans la règle
$(DELETE) file
je crois...
Mais c'est crade, non ? Enfin, j'y ai pensé mais ça m'a paru horrible...
J'ai donc fouillé un peu MSYS, j'ai paramétré %HOME%, C:\MinGW est bien monté comme il faut dans fstab, il me reste une question.
Comment faire pour que rm soit appelé par mingw32-make maintenant ? A partir d'où dois-je lancer tout ce bazard unix pour que rm soit reconnu ? Je dois partir directement du shell de msys ? Donc je dois préciser un autre point de montage dans fstab, genre "d:\programmation\...\monprojet $(HOME)/prog", puis lancer le build à partir du shell de MSYS (msys.bat) ?
nitro Le 06/11/2011 à 16:45 Quelques remarques :
- utilise g++ à la place de gcc pour faire du C++, ça link automatiquement la lib standard c++ quand tu fais un binaire (là tu n'as qu'une lib statique donc tu ne vois pas le problème)
- du coup, il faut utiliser CXX et non pas CPP (et d'ailleurs c'est CC pour gcc, car CPP c'est le preprocesseur), et ton CXXFLAGS était déjà bon
- à partir de là, la règle implicite %o: %.cpp n'est plus nécessaire car elle est déjà définie par défaut
- ton -I$(INCLUDE) est à mettre dans les CPPFLAGS (pour le preprocesseur) plutôt que CXXFLAGS
- tu peux aussi utiliser $(RM) à la place de 'rm -f', c'est défini par défaut et ton Makefile fonctionnera sur les systèmes où il n'y a pas de rm (ça n'a pas vraiment d'importance, et je ne connais même pas de quels systèmes il s'agit, mais je le précise comme ça quand tu verras $(RM) dans un Makefile tu sauras de quoi il s'agit)
- utilise plutôt "distclean" comme règle, c'est standard
- et enfin, tu peux faire générer les dépendances de tes .o automatiquement par gcc, il suffit de rajouter '-MMD -MP' dans tes CXXFLAGS, ce qui aura pour effet de générer un bout de makefile pour chaque .o avec les dépendances, qu'il ne reste plus qu'à inclure dans ton Makefile :
[code]DEPS=$(OBJ:.o=.d)
-include $(DEPS)[/code]
So much code to write, so little time.
je savais pas que $(RM) était déja défini avec la valeur kivabien pour la plate-forme, c'est cool.
Et elle est où, la doc de ces valeurs prédéfinie ?