sinon maintenant que j'ai appris les structure avec les fonction sa va pas faire un peu le bordel ?
comment on fait pour programmer un main un .cpp et un .hpp avec la console ? ![]()
2 solutions :
soit tu fais un Makefile (bonne solution selon moi mais faudra vérifier si ton ordinateur sait comprendre les makefile)
soit tu compiles en plusieurs étapes :
tu as main.cpp lib.hpp lib.cpp
tu fais :
g++ -c lib.cpp
g++ -c main.cpp
(en gros faut faire la commande avec chaque .cpp)
(ça va créer lib.o et main.o)
Maintenant faut lier tout ça :
g++ -o main.exe main.o lib.o
donc là on demande de créer un main.exe à partir des .o
Essaie maintenant ![]()
sa marche
mais sa veux dire que si un jour je fait un gros projet je dois compilé tous les fichier ?
sinon comment vérifier si mon pc comprend le makefile ?
Ah quand j'utilisé code blocks mes fichier .hpp contenté 3 ligne qui servais a s'assuré que le fichier ne sera pas appelé 2 fois mais si je veux le cpp du fichier dans le main et dans un autre cpp je dois appelé deux fois le .hpp donc je dois supprimer ces ligne ?
Tu doit parler des
...
?
Si c'est ça ne supprime SURTOUT PAS ces lignes sinon ça va être le bordel. Comme tu le dit elles servent à ne pas inclure 2 fois le même fichier dans un .cpp mais elles n'empêchent pas de l'inclure dans 2 .cpp différents.
Il faut toujours que ces lignes soient présentes dans un ficher .hpp (ou .h), avec BLABLA différent pour chaque fichier bien sur.
Une convention est de faire BLABLA=NOM_DU_FICHIER_H_ donc si ton fichier c'est calcul.hpp par exemple BLABLA sera CALCUL_H_. Je te dit ça parce que CodeBlocks les mets mais un jour tu devra bien le faire toi même.
Pour vérifier que ton pc comprends Makefile tu tapes make dans l'invité de commandes mais si tu poses la question je doute que tu ai installé make. De toutes façon avec CodeBlocks tu n'a pas besoin de ça tu fais F5 et ça va compiler, linker et executer pour toi du moment que tu a ajouté les fichiers dans le projet CodeBlocks.
neofungamer: oui, MinGW gère les makefile (c'est sans doute l'intérêt numéro 0 de MinGW d'ailleurs).
Une fois qu'il aura réussi une compilation séparée tout seul, prépare lui un Makefile passe partout et qu'on passe à de vraies choses. ![]()
"Je te dit ça parce que CodeBlocks les mets mais un jour tu devra bien le faire toi même."
se jours est arrivé
"mais si tu poses la question je doute que tu ai installé make."
J'ai trouvé sur le net plein de logiciel du genre : cmake , scons et ccbuild tu me conseille lequel ?
"et qu'on passe à de vraies choses."
![]()
Cmake ne permet pas directement de compiler un exécutable, il va seulement te générer d'autres fichiers te le permettant, ces derniers peuvent être des makefiles, des projets pour divers logiciels (C::B, VS...) etc...
Pour ce qui est du mingw, pour pouvoir compiler avec en ligne de commande il faut que tu suive ses quelques indications :
-> Ajoute dans un premiers temps le chemin de l'emplacement /Mingw/bin (qui se trouve normalement dans ton répertoire d'installation de C::B) dans la variable d'environnement "Path" que tu retrouve dans panneau de configuration -> utilisateurs. Fait bien attention d'avoir un ";" à la fin sinon cela ne fonctionnera pas.
-> Ouvre le shell window ( démarrer -> cmd ) et tape mingw32-make ou g++. Dans le cas où il t'indique qu'il ne connais pas la commande, deux possibilités, soit tu as mal ajouter le chemin, soit tu es obligé de reboot pour prendre en compte les paramètres. Dans le cas contraire, tout fonctionne.
Tu peux aussi te rendre sur le site de MinGW où tu trouveras toutes les informations essentielles à son fonctionnement.
winterD je viens de télécharger cmake et je dis pas non a un manuelle d'utilisation
par contre pour la console sa marche très bien merci ![]()
iLIKEto, je pense que cmake ne te servira pas.
par contre, essaie la commande : mingw32-make
si ça fonctionne, je te prépare un exemple avec un makefile et tu pourras voir si ça marche.
Ensuite plutôt que de taper tes commandes tu feras juste "mingw32-make" et ça compilera ton projet tout comme il faut.
Magique ![]()
Elle est reconnue ? ![]()
Parfait, tu vas pouvoir tester les makefiles !!!!
Alors tu vas mettre dans un dossier 3 fichiers.
Makefile
http://pastebin.com/RRREu1G3
main.cpp
http://pastebin.com/SBXiQfzA
common.hpp
http://pastebin.com/niBjJsYY
common.cpp
http://pastebin.com/cWr8tm18
puis tu vas te mettre dans le dossier et taper :
mingw32-make
et puis tu pourras executer main.exe
Ensuite, peux tu essayer de comprendre le Makefile que je t'ai donné. Ce n'est pas le plus simple mais ça passe facilement partout.
J'ai fais une bêtise sur le fichier Makefile
voilà le bon : http://pastebin.com/LiW1QjRn
Je vais essayé de comprendre je promet rien
CC=g++
partous ou en vois CC en le remplace par g++
CXXFLAGS=-Werror -Wall -Wextra
pareille que pour le CC
LDFLAGS=
il manquerai pas un truc après le = la ?
EXEC=main.exe
pareille que pour le CC
SRC= $(wildcard *.cpp)
OBJ= $(SRC:.cpp=.o)
la j'ai pas compris par quoi en les remplace mais bon on les remplace quand même
main.exe: $(OBJ)
$(CC) -o $@ $^ $(LDFLAGS)
j'ai pas trop compris la mais une chose est sur on obtiens un .exe
main.o: common.hpp le .hpp ( .hpp ?
) deviens un .o
%.o: %.cpp
$(CC) -o $@ -c $< $(CXXFLAGS)
la on compile le .exe et le .o pour obtenir le fichier final
le reste c'est des commentaire non ? ![]()
tout est là au sujet des makefiles :
http://gl.developpez.com/tutoriel/outil/makefile/
désolé de répondre que maintenant j'avais quelque truc a faire
En faite je sais toujours pas quoi maître après le . du fichier makefile si je le laisse sans point il devient un .txt et sa marche pas ![]()
Ah et merci pour le lien mais j'ai pas tous compris je vais me contenté de prendre ton exemple comme base ![]()
utilise notepad++ au lieu de notepad
http://notepad-plus-plus.org/fr/
Il te permettra d'enregistrer ton fichier comme tu le souhaiteras.
Utilise l'exemple du makefile pour le moment. Ca va aller. Tu comprendras petit à petit.
Je te propose aussi de prendre l'exercice de ton choix et de le faire dans plusieurs fichiers pour voir si t'as bien compris
comme tu le voie j'utilise bien notpad++ ^^
"Il te permettra d'enregistrer ton fichier comme tu le souhaiteras. "
sauf que je ne sait pas comment l'enregistrer la j'ai fait .makefile mais sa marche toujours pas
"Utilise l'exemple du makefile pour le moment. Ca va aller. Tu comprendras petit à petit. "
D'accord ![]()
Essaie de faire fichier puis renommer sur notepad ++ sinon dans ton terminal taper rename à.makefile Makefile