Datei mit Quellenunterverzeichnissen erstellen

8

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.

    
Jakob 11.03.2011, 13:18
quelle

3 Antworten

14
Mit

Make können Sie Ihre Regeln verallgemeinern, sodass Sie nicht für jede Datei eine erstellen müssen.

%Vor%

Sie können etwas wie folgt ausprobieren:

%Vor%     
Sagar 11.03.2011, 15:03
quelle
3

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:

%Vor%

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).

    
bobbogo 11.03.2011 19:17
quelle
-1

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.

    
M'vy 11.03.2011 13:29
quelle

Tags und Links