Makefile für die Kompilierung alle cpp-Dateien in einem Verzeichnis in separate ausführbare Datei
Ich studiere jetzt C++. Ich will ein makefile zum kompilieren alle cpp Dateien im aktuellen Verzeichnis in separaten ausführbaren Dateien. Zum Beispiel:
In einem Verzeichnis gibt es 3-c++ - Dateien, wie examp1.cpp, examp2.cpp und examp3.cpp. Ich will ein makefile zum kompilieren und verknüpfen Sie Sie und geben examp1.exe, examp2.exe und examp3.exe
Habe ich einen bash-Skript zu kompilieren, alle von Ihnen und erstellen EXE-Dateien, aber ich denke, das ist nicht die genaue Art und Weise, dies zu tun.
Habe ich ein Makefile für ".c", aber das scheint nicht zu funktionieren hier. Es ist nur bei der Erstellung von Objekt-Dateien und nicht eigentlich verknüpfen. Es ist wie folgt:
SRCS=$(wildcard *.c)
OBJS=(SRCS:.c=.o)
all: $(OBJS)
Den oben genannten code kompiliert werden, alle neuen und veränderten ".c" Dateien ".o" - Dateien mit demselben Namen im aktuellen Verzeichnis.
Dem bash-script, das ich verwende zum erstellen von ausführbaren Dateien ist wie folgt:
for i in ./*.cpp
do
g++ -Wno-deprecated $i -o `basename $i .cpp`".exe"
done
Bedeutet dies, ich will was auch immer ".cpp" Dateien, die ich in das Verzeichnis, mit einem einfachen "make all" oder so etwas, sollte es kompilieren.
- Haben Sie Versuch versuchen, um das makefile? Wenn ja poste es damit wir Ihnen helfen können. Es ist Dokumentation zur Verfügung, um loszulegen.
- Die Versionen variieren von einem Anbieter zu einem anderen. Was machen Sie mit? Verwenden Sie GNU-Make auf Linux? Microsoft auf Windows/Visual C++?
- Haben Sie versucht, schreiben Sie ein makefile, kompilieren eine source-Datei und erzeugt eine ausführbare Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine minimale Makefile das tut, was Sie wollen würde:
Haben Sie zu ersetzen von g++ der compiler Sie verwenden und evtl. anpassen, einige Plattform-spezifische Einstellung, aber das Makefile an sich arbeiten sollte.
Dies ist die Makefile, die ich verwenden
Sollten Sie fügen Sie es irgendwo in Ihrem Haus und wenn Sie die Verzichnis kopieren Sie es einfach dort. Ich benutze einen alias in meiner ~/.basrc, um es zu kopieren
Drücken Sie einfach
make
und bam, du bist fertig. Beachten Sie auch die Tatsache, dass, sobald Sie fertig sind mit den alten Dateien wird es nicht neu aufbauen, ausführbare Datei.Meine Antwort baut auf der Antwort von @Haatschii
Ich nicht lieber die
.out
Präfix für meine binaries. Auch ich nutzte seine vorhandenen Machen-syntax ausführen, sauber, gut.Einfachsten makefile können Sie erstellen, die funktionieren könnte für Sie, ist dies:
Verwenden, stellen Sie die Standard-Regeln zu erstellen Sie Ihre drei Programme.