Ich habe gerade einen C ++ - Code geerbt, der schlecht mit einer CPP-Datei geschrieben wurde, die die Haupt- und eine Reihe anderer Funktionen enthielt. Es gibt auch .h
Dateien, die Klassen und ihre Funktionsdefinitionen enthalten.
Bisher wurde das Programm mit dem Befehl kompiliert g++ main.cpp
. Muss ich nach der Trennung der Klassen .h
und .cpp
Dateien ein Makefile verwenden oder kann ich den g++ main.cpp
Befehl trotzdem verwenden ?
c++
compilation
header
makefile
Meir
quelle
quelle
g++ *.cpp -o output
Um separat ohne Verknüpfung zu kompilieren, müssen Sie die folgende
-c
Option hinzufügen :quelle
g++ -o my_executable myclass.o main.o
Das gleichzeitige Kompilieren mehrerer Dateien ist eine schlechte Wahl, wenn Sie diese in das Makefile einfügen möchten.
Normalerweise sollte es in einem Makefile (für GNU / Make ) ausreichen, Folgendes zu schreiben:
Auf diese Weise
make
würde nur das, was neu kompiliert werden muss, ordnungsgemäß neu kompiliert. Man kann auch einige Optimierungen hinzufügen, um die Abhängigkeiten der Header-Dateien zu generieren - so dass make auch das, was aufgrund der Änderungen der Header-Datei neu erstellt werden muss, ordnungsgemäß neu erstellt.quelle
Sie können g ++ weiterhin direkt verwenden, wenn Sie möchten:
Dabei sind f1.cpp und f2.cpp die Dateien mit den darin enthaltenen Funktionen. Einzelheiten zur Verwendung von make für den Build finden Sie in der hervorragenden Dokumentation zu GNU make .
quelle
Ich weiß, dass diese Frage vor Jahren gestellt wurde, wollte aber trotzdem mitteilen, wie ich normalerweise mehrere C ++ - Dateien kompiliere.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
das ist alles!!
Der Grund, warum ich * verwende, ist, dass Sie bei 30 cpp-Dateien alle eingeben würden. oder benutze einfach das * Zeichen und spare Zeit :)
ps Verwenden Sie diese Methode nur, wenn Sie sich nicht für Makefile interessieren.
quelle
.h
Dateien haben nichts mit Kompilieren zu tun ... Sie interessieren sich nur für CPP-Dateien ... also geben Sie eing++ filename1.cpp filename2.cpp main.cpp -o myprogram
bedeutet, dass Sie jede CPP-Datei kompilieren und dann miteinander verknüpfen
myprgram
.Führen Sie dann Ihr Programm aus
./myprogram
quelle
Wie rebenvp sagte, habe ich verwendet:
Und dann machen Sie dies für die Ausgabe:
Eine bessere Lösung ist jedoch die Verwendung von
make
Dateien. Lesen Sie hier , um mehr übermake
Dateien zu erfahren .Stellen Sie außerdem sicher, dass Sie die erforderlichen
.h
Dateien zu den.cpp
Dateien hinzugefügt haben .quelle
Sie können mehrere g ++ - Befehle verwenden und dann verknüpfen. Am einfachsten ist es jedoch, ein traditionelles Makefile oder ein anderes Build-System zu verwenden: wie Scons (die häufig einfacher einzurichten sind als Makefiles).
quelle
Wenn Sie
#include <myheader.hpp>
in Ihren CPP-Dateien verwenden möchten, können Sie Folgendes verwenden:quelle
Früher habe ich ein benutzerdefiniertes Makefile verwendet, das alle Dateien im aktuellen Verzeichnis kompiliert hat, aber ich musste es jedes Mal in jedes Verzeichnis kopieren, das ich brauchte.
Also habe ich mein eigenes Tool erstellt - Universal Compiler, das den Prozess beim Kompilieren vieler Dateien erheblich vereinfacht hat.
quelle
~ / In_ProjectDirectory $ g ++ Koordinate_main.cpp Koordinate_Func.cpp Koordinate.h
~ / In_ProjectDirectory $ ./a.out
... Hat funktioniert!!
Verwenden von Linux Mint mit Geany IDE
Wenn ich jede Datei in demselben Verzeichnis gespeichert habe, wurde eine Datei nicht korrekt im Verzeichnis gespeichert. die Datei koordin.h. Also erneut überprüft und es wurde dort als Koordinate.h und nicht fälschlicherweise als -> Koordinate.h.gch gespeichert. Das kleine Zeug. Arg !!
quelle