Comment compiler un programme .cpp

Résolu/Fermé
Signaler
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020
-
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
-
Bonjour,

Je viens d'installer une librairie de classe cpp, mais quand j'utilise les headers de cette bibliothèque et lors de la compilation je trouve des problèmes . Lors de ma recherche, je trouve qu'il me faut configurer le makefile, j'ai trouvé est le fichier de configuration où on indiquera à gcc les différentes options de compilation et les différentes librairies à utiliser.Mais je sais pas comment faire.

Donnez moi un coup de main.
Merci

13 réponses

Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Enfin , voici mon code:
----------------------------------------------------------------
#include "cogitant/cogitant.h"
#include <iostream.h>

int main(int, char* [])
{
cout<<"Mon premier test"<<endl;
cogitant::Environment env;
return 0;
}
------------------------------------------------------------

Je compile avec:
c++ -c -Wno-deprecated test.cpp // cela marche sans erreurs
puis je tape ça:
c++ -o test test.o //là il m'affiche l'erreur suivante:

undefined reference to 'cogitant::Environment env(cogitant::Environment envAllocator const*)'
----------------------------------------------------------------
Et dans la doc du librairie, je trouve que pour compiler des programmes utilisant cogitant: il nous faut définir des liks; et il ont donnée un exemple de Make file qui est le suivant:
-------------------------------------------------------------
The following file can be used as a model for compiling programs using the library (construction of an executable named
minimum from a source file minimal.cpp). You may need to modify the line PROGRAM= in order to choose the name of the
executable result and the line SOURCES= to specify the names of the source files that constitute the program to be built (cpp
extension, use the space as a separator).
# CoGITaNT 5
# Construction d’un programme (Unix, methode standard, bibliotheque installee)
# David Genest
PROGRAM = minimal
SOURCES = minimal.cpp
CXXFLAGS = ‘cg-config --cflags‘
LDFLAGS = ‘cg-config --libs‘
OBJECTS = $(SOURCES:.cpp=.o)
$(PROGRAM): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $(PROGRAM)
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $<
clean:
$(RM) $(OBJECTS) $(PROGRAM)
-------------------------------------------------------------------------------
Hors que quand j'ouvre le fichier Makefile je le trouve rempli, je sais pas ou mettre tous ça; faut il creer un autre fichier Makefile????

Aidez moi s'il vous plait
0
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
22
Je ne prétends pas résoudre ton problème mais à tu essayé de compiler avec g++ ?
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Je viens d'essayer la compilation avec gcc mais toujours il y on a des problèmes genre: undefined refernce to....

Bon peut etre puisque je suis débutante j'arrive pas à appliquer ce qui a été expliqué dans la doc accompagné au librairie mais quelqu'un ayant de l'expériense peut la comprendre j'espère.

voici la procedure complete:

Compilation:
Specific parameters to be passed to the compiler involve two areas:
• The definition of pre-processor symbols for the management of assertions (ASSERT_MODE) and for the display of certain
information which ease debugging (LOG_MODE). These two symbols must be defined exactly the same way as when
compiling platform’s source, otherwise you may get link editing errors or erroneous behaviors: These parameters do not
depend on the application built with CoGITaNT but on the way the library was constructed.
• The addition of the directory containing headers files to the directories browsed by the pre-processor during the interpretation
of a directive #include.
Such parameters are sent to standard output when the script cg-config is called with the -cflags parameter. So, in order
to compile a file main.cpp using Cogitant’s classes, you can define a dependency in the Makefile of your program in the
following way:
main.o: main.cpp
$(CXX) ‘cg-config --cflags‘ -c $<
Link editing:
Parameters to be passed to the linker concern the path in which Cogitant’s library (dynamically linked archive or library) is
stored. These parameters are sent to standard output when the script cg-config is called with the -libs parameter. So, for
editing links of a program called test and built from a single object file called main.o, you can define this dependency :
test: main.o
$(CXX) ‘cg-config --libs‘ -o test main.o

Makefile example:
The following file can be used as a model for compiling programs using the library (construction of an executable named
minimum from a source file minimal.cpp). You may need to modify the line PROGRAM= in order to choose the name of the
executable result and the line SOURCES= to specify the names of the source files that constitute the program to be built (cpp
extension, use the space as a separator).
# CoGITaNT 5
# Construction d’un programme (Unix, methode standard, bibliotheque installee)
# David Genest
PROGRAM = minimal
SOURCES = minimal.cpp
CXXFLAGS = ‘cg-config --cflags‘
LDFLAGS = ‘cg-config --libs‘
OBJECTS = $(SOURCES:.cpp=.o)
$(PROGRAM): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $(PROGRAM)
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $<
clean:
$(RM) $(OBJECTS) $(PROGRAM)
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Ya personne pour m'aider.
0
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
22
Je débute aussi.
Je peux te donner un site pour apprendre sans difficulté le c++
https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c
c'est vraiment très clair et très détaillé, tout est marqué.
0
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
22
#include <iostream.h>
using namespace std;

int main()
{
cout<<"Mon premier test"<<endl;

return 0;
} 



et pour compiler:
g++ "le_nom_de_ton_fichier.cpp" -o "le_nom_de_ton_fichier_sortie"
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Je viens de recevoir une information que pour cela marche je doit rajouter ça lors de la compilation: -l nombiblio.

J'ai essayé ça en faisant -lcogitant-5.2.0 mais ça n'as pas marché. Je sais pas c'est quoi exactement nombilio, est ce que c'est le nom de la bibliothèque utilisée ou quoi.

Quelqu'un connait quelque chose sur ça?
0
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
22
"nombiblio" doit surement vouloir dire "nom de la bibliothèque utilisée" comme tu le dis
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Oui oui c avec un g++ c'était juste un oublie pas le gcc.

Pour le nom de la biblioyhèque j'ai essayé mais ça na pas marché. Il manque quelque chose que je doit faire mais je sais pas c'est quoi!!!!!!!!
Et merci pour le site je vais le consulter et il va surment m'aider parce que je suis dans mes premiers pas.
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Merci pour toi diaboly, c'est bon cela marche très bien, en fait il faut utiliser -l nom de la biblithèque, je me suis trompé dans ce nom, je doit mettre le nom qui apparait à l'interieur du repertoire include de la librairie.
0
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
22
Peux tu donner le bon code pour que la compilation fonctionne stp?


oui, c'est un très bon site pour débuter de zero et il n'y a pas que des cours de c++ (php html et plein d'autres)
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

Ok sans aucun problème.

En effet le code n'a pas changé c'est lors de la compilations tu tape:
c++ -c test.cpp
c++ -o test test.o -lcogitant //ici cogitant est le nom de la bibliothèque.

Merci
0
Messages postés
70
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2020

J'ai oublié de spécifier qu'il faut supprimer le .h du iostream, tu écris seulement <iostream>.

Peux tu me dire que est ce que signifie les :: dans un code c++.
0
Messages postés
79
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
10 février 2012
22
vas voir ici

http://www.siteduzero.com/tutoriel-3-11131-premier-programme-c-avec-cout-et-cin.html



Il y a deux mots-clé particuliers dans cette ligne : cout et endl. Vous noterez qu'ils ont tous les deux le préfixe std::
Tous les mots-clé de la librairie standard du C++ utilisent ce préfixe. Théoriquement, on est obligé de le mettre à chaque fois, mais c'est un peu lourd.
On a heureusement une solution pour se simplifier la vie.
0