240 votes

Utiliser G ++ pour compiler plusieurs fichiers .cpp et .h

Je viens d'hériter du code C ++ mal écrit avec un fichier cpp contenant la fonction principale et de nombreuses autres fonctions. Il existe également des fichiers .h qui contiennent des classes et leurs définitions de fonctions.

Jusqu'à présent, le programme était compilé à l'aide de la commande g++ main.cpp . Maintenant que j'ai séparé les classes en .h et .cpp fichiers dois-je utiliser un fichier makefile ou puis-je quand même utiliser la commande g++ main.cpp ?

306voto

Goz Points 35007

liste tous les autres fichiers cpp après main.cpp.

c'est à dire

 g++ main.cpp other.cpp etc.cpp
 

etc.

Ou vous pouvez les compiler tous individuellement. Vous liez ensuite tous les fichiers ".o" résultants.

83voto

FredAKA Points 38

Pour compiler séparément sans lien, vous devez ajouter l'option -c:

     g++ -c myclass.cpp
    g++ -c main.cpp
    g++ myclass.o main.o
    ./a.out
 

26voto

Dummy00001 Points 6088

Maintenant que je vous ai séparés des classes .h et .fichiers cpp dois-je utiliser un makefile ou puis-je toujours utiliser le "g++ main.cpp la commande"?

La compilation de plusieurs fichiers à la fois est un mauvais choix si vous allez mettre dans le fichier Makefile.

Normalement, dans un Makefile (pour GNU/Faire), il suffit d'écrire que:

# "all" is name of the default target, running "make" without params would use it
all: executable1

# for C++, replace CC (c compiler) with CXX (c++ compiler) which is used as default linker
CC=$(CXX)

# tell which files should be used, .cpp -> .o make would do automatically
executable1: file1.o file2.o

De cette façon, make seraient tout recompiler uniquement ce qui doit être recompilé. On peut aussi ajouter un peu de bricolage pour générer le fichier d'en-tête dépendances - afin de faire serait également bien de reconstruire ce qui est le besoin d'être reconstruit en raison de l'en-tête des modifications de fichiers.

4voto

gauteh Points 3288

Vous pouvez utiliser plusieurs commandes g ++, puis link, mais le plus simple est d'utiliser un Makefile traditionnel ou un autre système de construction: comme Scons (qui sont souvent plus faciles à configurer que les Makefiles).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X