Ich habe einige Tutorials zu Makefiles gelesen, aber für mich ist immer noch unklar, wofür das Ziel "all" steht und was es tut.
Irgendwelche Ideen?
Ein Build, wie Makefile es versteht, besteht aus vielen Zielen. Zum Beispiel, um ein Projekt zu erstellen, das Sie möglicherweise benötigen
Wenn Sie diesen Workflow mit Makefile implementiert haben, können Sie jedes der Ziele separat erstellen. Zum Beispiel, wenn Sie geschrieben haben
make file1.o
Diese Datei wird nur bei Bedarf erstellt.
Der Name von all
ist nicht festgelegt. Es ist nur ein herkömmlicher Name; all
Ziel bedeutet, dass make beim Aufrufen alles erstellt, was für einen vollständigen Build erforderlich ist . Dies ist normalerweise ein Dummy-Ziel, das keine Dateien erstellt, sondern nur von den anderen Dateien abhängt. Im obigen Beispiel werden beim Erstellen aller erforderlichen Dateien ausführbare Dateien erstellt, wobei die anderen Dateien als Abhängigkeiten abgerufen werden. Im Makefile sieht es also so aus:
all: executable1 executable2
all
Ziel ist normalerweise das erste im Makefile, da make
es das erste Ziel erstellt , wenn Sie nur in die Befehlszeile schreiben , ohne das Ziel anzugeben. Und Sie erwarten esall
.
all
ist in der Regel auch ein .PHONY
Ziel. Erfahren Sie hier mehr .
Das Handbuch für GNU Make enthält eine klare Definition all
in der Liste der Standardziele .
Wenn der Autor des Makefiles dieser Konvention folgt, all
sollte das Ziel :
make
sollte man einfach das gleiche machen wie make all
.Das Erreichen von 1 all
wird normalerweise als .PHONY
Ziel definiert , das von den ausführbaren Dateien abhängt, aus denen das gesamte Programm besteht:
.PHONY : all
all : executable
Um 2 zu erreichen, all
sollte entweder das erste in der make-Datei definierte Ziel sein oder als Standardziel zugewiesen werden:
.DEFAULT_GOAL := all
Ich bin mir nicht sicher, ob es für etwas Besonderes steht. Es ist nur eine Konvention, dass Sie eine "Alle" -Regel angeben. Im Allgemeinen werden alle Unterziele aufgelistet, die zum Erstellen des gesamten Projekts erforderlich sind, daher der Name "Alle". Das einzig Besondere daran ist, dass die Leute es oft als erstes Ziel in das Makefile einfügen, was bedeutet, dass nur das alleinige Eingeben von 'make' dasselbe bewirkt wie 'make all'.
Das Ziel "all" ist ein Beispiel für ein Dummy-Ziel - auf der Festplatte befindet sich nichts mit dem Namen "all". Dies bedeutet, dass make bei einem "make all" immer denkt, dass es erstellt werden muss, und daher alle Befehle für dieses Ziel ausführt. Diese Befehle sind normalerweise solche, die alle Endprodukte erstellen, die das Makefile kennt, aber alles können.
Andere Beispiele für Dummy-Ziele sind "sauber" und "installieren" und funktionieren auf die gleiche Weise.
Wenn Sie es noch nicht gelesen haben, sollten Sie das GNU Make Manual lesen , das auch ein hervorragendes Tutorial ist.