Je viens d'hériter d'un code C ++ qui a été mal écrit avec un fichier cpp qui contenait le principal et un tas d'autres fonctions. Il existe également des .h
fichiers contenant des classes et leurs définitions de fonction.
Jusqu'à présent, le programme était compilé à l'aide de la commande g++ main.cpp
. Maintenant que j'ai séparé les classes .h
et les .cpp
fichiers, dois-je utiliser un makefile ou puis-je toujours utiliser la g++ main.cpp
commande?
g++ *.cpp -o output
Pour compiler séparément sans liaison, vous devez ajouter une
-c
option:la source
g++ -o my_executable myclass.o main.o
Compiler plusieurs fichiers à la fois est un mauvais choix si vous allez le mettre dans le Makefile.
Normalement dans un Makefile (pour GNU / Make ) il devrait suffire d'écrire que:
De cette façon
make
, recompiler correctement uniquement ce qui doit être recompilé. On peut également ajouter quelques modifications pour générer les dépendances du fichier d'en-tête - de sorte que make reconstruirait également correctement ce qui doit être reconstruit en raison des modifications du fichier d'en-tête.la source
Vous pouvez toujours utiliser g ++ directement si vous le souhaitez:
où f1.cpp et f2.cpp sont les fichiers contenant les fonctions. Pour plus de détails sur l'utilisation de make pour faire la compilation, consultez l'excellente documentation de GNU make .
la source
Je sais que cette question a été posée il y a des années, mais je voulais toujours partager comment je compile habituellement plusieurs fichiers C ++.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
c'est tout!!
La raison pour laquelle j'utilise * est que si vous avez 30 fichiers cpp, les taperiez-vous tous? ou utilisez simplement le signe * et gagnez du temps :)
ps N'utilisez cette méthode que si vous ne vous souciez pas de makefile.
la source
.h
les fichiers n'ont rien à voir avec la compilation ... vous ne vous souciez que des fichiers cpp ... alors tapezg++ filename1.cpp filename2.cpp main.cpp -o myprogram
signifie que vous compilez chaque fichier cpp, puis que vous les liez ensemble dans
myprgram
.puis lancez votre programme
./myprogram
la source
Comme rebenvp l'a dit, j'ai utilisé:
Et puis faites ceci pour la sortie:
Mais une meilleure solution consiste à utiliser un
make
fichier. Lisez ici pour en savoir plus surmake
fichiers.Assurez-vous également que vous avez ajouté les
.h
fichiers requis dans les.cpp
fichiers.la source
Vous pouvez utiliser plusieurs commandes g ++ puis lier, 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 Makefiles).
la source
Si vous souhaitez utiliser
#include <myheader.hpp>
dans vos fichiers cpp, vous pouvez utiliser:la source
J'avais l'habitude d'utiliser un Makefile personnalisé qui compilait tous les fichiers du répertoire actuel, mais je devais le copier dans chaque répertoire dont j'avais besoin, à chaque fois.
J'ai donc créé mon propre outil - Universal Compiler qui a rendu le processus beaucoup plus facile lors de la compilation de nombreux fichiers.
la source
~ / In_ProjectDirectory $ g ++ coordin_main.cpp coordin_func.cpp coordin.h
~ / In_ProjectDirectory $ ./a.out
... Travaillé!!
Utilisation de Linux Mint avec Geany IDE
Lorsque j'ai enregistré chaque fichier dans le même répertoire, un fichier n'était pas enregistré correctement dans le répertoire; le fichier coordin.h. Donc, revérifié et il a été enregistré là sous coordin.h, et pas incorrectement sous -> coordin.h.gch. Les petites choses. Arg !!
la source