Der Kompilierungsworkflow eines einfachen Programms ist einfach. Ich kann ihn als kleines Diagramm zeichnen: Quelle -> [Kompilierung] -> Objekt [Verknüpfung] -> ausführbare Datei. In diesem Diagramm befinden sich Dateien (Quelle, Objekt, ausführbare Datei) und Regeln ( Terminologie von make ). Dieses Diagramm wird im Makefile definiert .
Wenn Sie make starten, wird Makefile gelesen und nach geänderten Dateien gesucht . Wenn es welche gibt, löst es die Regel aus , die davon abhängt. Die Regel kann weitere Dateien erzeugen / aktualisieren , wodurch andere Regeln usw. ausgelöst werden können . Wenn Sie ein gutes Makefile erstellen, werden nur die erforderlichen Regeln (Compiler- / Link-Befehle) ausgeführt, die aus der geänderten Datei im Abhängigkeitspfad "zum nächsten" stehen.
Wählen Sie ein Beispiel- Makefile aus , lesen Sie das Handbuch für die Syntax (es ist auf den ersten Blick klar, ohne Handbuch) und zeichnen Sie das Diagramm . Sie müssen die Compileroptionen verstehen, um die Namen der Ergebnisdateien herauszufinden.
Das Make-Diagramm sollte so komplex sein, wie Sie möchten. Sie können sogar Endlosschleifen machen (nicht machen)! Sie können make mitteilen , welche Regel Ihr Ziel ist , sodass nur die links stehenden Dateien als Auslöser verwendet werden.
Nochmals: Zeichnen Sie die Grafik !
make program1 program2Dadurch werden beide Ziele in dem Beispiel aufgerufen, das Sie sich selbst gegeben haben. Wenn Sie nur möchtenprogram1, können Sie nur ausführenmake(es wird das erste Ziel ausgeführt). Wenn Sie nur wollenprogram2, laufen Siemake program2. Sie haben mehr Kontrolle. Und natürlich wird ein Zielall: program1 program2genau das tun (es ist das erste, das Ihre 2 anderen Ziele ausführt). Getan.