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

J’ai juste hérité d’un code C ++ mal écrit avec un fichier cpp qui contenait le principal et un tas d’autres fonctions. Il existe également des fichiers .h contenant 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 fichiers .h et .cpp , dois-je utiliser un g++ main.cpp ou puis-je toujours utiliser la commande g++ main.cpp ?

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 comstackr tous individuellement. Vous liez ensuite tous les fichiers “.o” résultants.

Pour comstackr séparément sans lier, vous devez append l’option -c:

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

Maintenant que j’ai séparé les classes en fichiers .h et .cpp, dois-je utiliser un fichier makefile ou puis-je quand même utiliser la commande “g ++ main.cpp”?

Comstackr plusieurs fichiers à la fois est un mauvais choix si vous allez mettre cela dans le Makefile.

Normalement, dans un Makefile (pour GNU / Make ), il devrait suffire d’écrire que:

 # "all" is name of the default target, running "make" without params would use it all: executable1 # for C++, replace CC (c comstackr) with CXX (c++ comstackr) 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 ne recomstackrait correctement que ce qui doit être recompilé. On peut également append quelques ajustements pour générer les dépendances du fichier d’en-tête – de sorte que make reconstruise correctement ce qui doit être reconstruit en raison des modifications du fichier d’en-tête.

Vous pouvez toujours utiliser g ++ directement si vous voulez:

 g++ f1.cpp f2.cpp main.cpp 

où f1.cpp et f2.cpp sont les fichiers contenant les fonctions. Pour plus de détails sur l’utilisation de make to make, consultez l’excellente documentation de make GNU .

Je sais que cette question a été posée il y a des années mais je voulais quand même partager comment je comstack habituellement plusieurs fichiers c ++.

  1. Disons que vous avez 5 fichiers cpp, il vous suffit d’utiliser le * au lieu de taper chaque nom de fichier cpp. Par exemple g ++ -c * .cpp -o monprogramme.
  2. Cela va générer “myprogram”
  3. lancer le programme ./myprogram

c’est tout!!

La raison pour laquelle j’utilise * est que si vous avez 30 fichiers cpp vous les tapez tous? ou utilisez simplement le signe * et gagnez du temps 🙂

ps Utilisez cette méthode uniquement si vous ne vous souciez pas de makefile.

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

Les fichiers .h n’auront rien à voir avec la compilation … vous ne vous souciez que des fichiers cpp … alors tapez g ++ nomfichier1.cpp nomfichier2.cpp main.cpp -o monprogramme

Cela signifie que vous comstackz chaque fichier cpp et que vous les reliez ensuite à myprgram.

puis lancez votre programme ./myprogram

J’avais l’habitude d’utiliser un Makefile personnalisé qui compilait tous les fichiers du répertoire courant, mais je devais le copier dans chaque répertoire dont j’avais besoin, à chaque fois.

J’ai donc créé mon propre outil, Universal Comstackr, ce qui a facilité le processus lors de la compilation de nombreux fichiers.

~ / In_ProjectDirectory $ g ++ coordin_main.cpp coordin_func.cpp coordin.h

~ / In_ProjectDirectory $ ./a.out

… Travaillé!!

Utiliser Linux Mint avec Geany IDE

Lorsque j’ai enregistré chaque fichier dans le même répertoire, un fichier n’a pas été enregistré correctement dans le répertoire. le fichier coordin.h. Donc, revérifié et il a été enregistré comme coordin.h, et pas à tort -> coordin.h.gch. Le petit truc Arg !!