machen Sie die Datei mit source Unterverzeichnisse
Mein neuestes Projekt ist in C++ und ich verwende GNU Make.
Das Projekt Verzeichnis-layout wie folgt:
project
|-src
|-subdir1
|-subdir2 (containing tests)
|-doc
|-bin
Ich würde gerne in der Lage sein zu rufen make
in der top-level-Verzeichnis (d.h. müssen ein makefile in das Projekt-Verzeichnis) das Zusammentragen aller Quellen in den beiden "src" Unterverzeichnisse und platzieren Sie die resultierende Binärdateien in das Verzeichnis "bin".
Was wäre der beste Ansatz, um dies zu tun? Es wäre auch toll, wenn ich nicht hinzufügen, um eine Regel für jede Quell-Datei, aber die hatten nur eine für alle .cc und .h-Dateien in den Verzeichnissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen, können Sie verallgemeinern Ihre Regeln, so dass Sie nicht brauchen, um eines zu erstellen-für jede Datei.
Können Sie versuchen, so etwas wie dieses:
Verwenden Sie einen make-Durchlauf zu tun, die bauen (ich bin kein fan von rekursiv machen). Verwenden Sie nicht
$(shell)
als es killt die performance. Setzen Sie bauen Produkte in ein temporäres Verzeichnis.Skizze:
Können Sie sehen, Kessel Platte hier? Ein paar Funktionen zusammen mit
$(eval)
sollte Ihnen ermöglichen, zu schreiben:diese Ziele automatisch als Abhängigkeiten Hinzugefügt von der falschen
all
und schön-j
kompatibel (nur Typmake -j5 all
zu bauen).Haben Sie, um sub-makefile innerhalb der Verzeichnisse, und verwenden Sie die Befehle, um die Ausgabe von g++ kompiliert die Dateien in die Verzeichnisse, die Sie wollen. (Verwenden Sie die makefile-Variablen, etc...)
Finden Sie eine schöne Einführung, rekursive Makefiles hier
Makefile lassen Sie einige Allgemeine Regeln wie :
sowie auch können Sie eine Globale makefile aus anderen mit
include
.Wenn Sie auch google makefile, finden Sie jede Menge how-to zu dem Thema.