Mein letztes Projekt ist in C ++ und ich benutze GNU Make. Das Layout des Projektverzeichnisses lautet wie folgt:
%Vor% Ich möchte make
im Verzeichnis der obersten Ebene aufrufen (zB ein Makefile im Projektverzeichnis), um alle Quellen in beiden "src" -Unterverzeichnissen zu kompilieren und die resultierenden Binärdateien in das "bin" -Verzeichnis zu stellen .
Was wäre der beste Ansatz dafür? Es wäre auch großartig, wenn ich für jede Quelldatei keine make-Regel hinzufügen müsste, sondern nur eine für alle .cc- und .h-Dateien in den Verzeichnissen.
Benutze einen make run, um den Build zu machen (ich bin kein Fan von rekursivem make). Verwenden Sie nicht $(shell)
, da dies die Leistung beeinträchtigt. Setzen Sie Build-Produkte in ein temporäres Verzeichnis.
Skizze:
%Vor% Können Sie die Kesselplatte hier sehen? Ein paar Funktionen zusammen mit $(eval)
sollten Ihnen erlauben zu schreiben:
mit diesen Zielen automatisch als Abhängigkeiten der falschen all
hinzugefügt, und schön -j
kompatibel (geben Sie einfach make -j5 all
zu bauen).
Sie müssen Sub-Makefile innerhalb der Verzeichnisse erstellen und die Befehle verwenden, um g ++ kompilierte Dateien in die gewünschten Verzeichnisse auszugeben. (Verwenden Sie Makefile-Variablen usw.)
Sie finden hier eine nette Einführung in rekursive Makefiles hier
Makefile lässt Sie einige generische Regeln verwenden wie:
%Vor% und Sie können auch ein globales Makefile von einem anderen mit include
einfügen.
Wenn Sie auch ein Makefile googlen, finden Sie viele Anleitungen zum Thema.
Tags und Links makefile