Skip to main content

WIE MAN: Den Unix- und Linux-Befehl verstehen: make - 2021

VI Editor - Linux Tutorial #14 (Oktober 2021).

VI Editor - Linux Tutorial #14 (Oktober 2021).
Anonim

Das Dienstprogramm make dient dazu, automatisch zu ermitteln, welche Teile eines großen Programms neu kompiliert werden müssen, und die Befehle zum Neukompilieren auszugeben. Das Handbuch beschreibt die GNU-Implementierung von make, die von Richard Stallman und Roland McGrath geschrieben wurde. Diese Beispiele zeigen C-Programme, da sie am häufigsten vorkommen, aber Sie können make mit jeder Programmiersprache verwenden, deren Compiler mit einem Shell-Befehl ausgeführt werden kann. In der Tat ist make nicht auf Programme beschränkt. Sie können damit jede Aufgabe beschreiben, bei der einige Dateien automatisch aktualisiert werden müssen, wenn sich andere ändern.

Hinweis: Diese Seite ist ein Auszug aus der Dokumentation von GNU make . Es wird nur gelegentlich aktualisiert, da das GNU-Projekt nroff nicht verwendet. Eine vollständige, aktuelle Dokumentation finden Sie in der Infodatei make.info, die aus der Texinfo-Quelldatei make.texinfo erstellt wird.

Syntax und Vorbereitung des Dienstprogramms make

machen -f Makefile Möglichkeit … Ziel …

Um sich auf die Verwendung von make vorzubereiten, müssen Sie eine Datei namens Makefile schreiben, die die Beziehungen zwischen den Dateien in Ihrem Programm beschreibt und die Befehle zum Aktualisieren der einzelnen Dateien angibt. Normalerweise wird eine ausführbare Datei aus Objektdateien aktualisiert, die wiederum durch das Kompilieren von Quelldateien erstellt werden.

Sobald ein geeignetes Makefile vorhanden ist, wird bei jedem Ändern einiger Quelldateien dieser einfache Shellbefehl verwendet machen es genügt, um alle erforderlichen Neuzusammenstellungen durchzuführen. Das make-Programm verwendet die Makefile-Datenbank und die Zeiten der letzten Änderung, um zu entscheiden, welche der Dateien aktualisiert werden muss. Für jede dieser Dateien werden die in der Datenbank aufgezeichneten Befehle ausgegeben.

Das Dienstprogramm make führt im Makefile Befehle aus, um einen oder mehrere Zielnamen zu aktualisieren Name ist normalerweise ein Programm. Wenn nein-f Option ist vorhanden, make sucht nach den MakefilesGNUmakefile, Makefile, undMakefile, in dieser Reihenfolge.

Normalerweise sollten Sie Ihr Makefile entweder Makefile oder Makefile nennen. (Es wird empfohlen, Makefile zu verwenden weil es prominent in der Nähe des Beginns einer Verzeichnisliste erscheint, in der Nähe anderer wichtiger Dateien, wie zREADME.) Das mit dem ersten Namen überprüfte GNUmakefile wird für die meisten Makefiles nicht empfohlen. Sie sollten diesen Namen verwenden, wenn Sie ein Makefile haben, das für GNU make spezifisch ist und von anderen Versionen von make nicht verstanden wird. Wenn Makefile ist -wird die Standardeingabe gelesen.

Das machen Das Dienstprogramm aktualisiert ein Ziel, wenn es von vorausgesetzten Dateien abhängt, die seit der letzten Änderung des Ziels geändert wurden, oder wenn das Ziel nicht vorhanden ist.

Optionen

Das -b und -m Optionen werden aus Gründen der Kompatibilität mit anderen Versionen von make ignoriert.

-C dir wechselt in das Verzeichnis dir, bevor Sie die Makefiles lesen oder etwas anderes tun. Wenn mehrere-C Optionen werden angegeben, jede wird relativ zur vorherigen interpretiert:-C/ -C etc ist äquivalent zu-C / etc. Dies wird normalerweise bei rekursiven Aufrufe von make verwendet.

Das -d Diese Option gibt Debugging-Informationen zusätzlich zur normalen Verarbeitung aus. In den Debugging-Informationen wird angegeben, welche Dateien für das Remaking in Betracht gezogen werden, welche Dateimöglichkeiten verglichen werden und mit welchen Ergebnissen, welche Dateien tatsächlich neu erstellt werden müssen, welche impliziten Regeln berücksichtigt und welche angewendet werden .

Das -e Diese Option gibt Variablen aus der Umgebung Vorrang vor Variablen aus Makefiles.

Das -f Datei Option verwendet Datei als ein Makefile.

Das -ich Diese Option ignoriert alle Fehler in Befehlen, die zum Remake von Dateien ausgeführt werden.

Das -ICH dir Option gibt ein Verzeichnis an dir um nach enthaltenen Makefiles zu suchen. Wenn mehrere-ICH Über Optionen werden mehrere Verzeichnisse angegeben. Die Verzeichnisse werden in der angegebenen Reihenfolge durchsucht. Im Gegensatz zu den Argumenten zu anderen Flags von make werden Verzeichnisse mit angegeben-ICH Fahnen können direkt nach der Fahne kommen:-Idir ist erlaubt, sowie-I dir . Diese Syntax ist aus Kompatibilitätsgründen mit dem C-Präprozessor zulässig-ICH Flagge.

Das -j Arbeitsplätze Option gibt die Anzahl der gleichzeitig auszuführenden Jobs (Befehle) an. Wenn es mehr als eine gibt-j Option, die letzte ist wirksam. Wenn die-j Option wird ohne Argument angegeben, make begrenzt nicht die Anzahl der Jobs, die gleichzeitig ausgeführt werden können.

Das -k Option wird nach einem Fehler so weit wie möglich fortgesetzt; Während das fehlgeschlagene Ziel und das davon abhängige Ziel nicht erneut erstellt werden können, können die anderen Abhängigkeiten dieser Ziele trotzdem verarbeitet werden.

Das -l und -l laden Optionen geben an, dass keine neuen Jobs (Befehle) gestartet werden sollen, wenn andere Jobs ausgeführt werden und der Lastdurchschnitt mindestens beträgtBelastung (eine Fließkommazahl). Ohne Argument entfernt es eine vorherige Lastgrenze.

Das -n Die Option druckt die Befehle, die ausgeführt werden würden, führt sie jedoch nicht aus.

Das -O Datei Option macht das nicht neu Datei auch wenn es älter als seine Abhängigkeiten ist und aufgrund von Änderungen nichts ändert Datei . Im Wesentlichen wird die Datei als sehr alt behandelt und ihre Regeln werden ignoriert.

Das -p Option druckt die Datenbank (Regeln und Variablenwerte), die sich aus dem Lesen der Makefiles ergibt. Es wird dann wie üblich oder wie angegeben ausgeführt.Dies gibt auch die Versionsinformationen aus, die vom angegeben werden-v Schalter (siehe unten). Um die Datenbank zu drucken, ohne zu versuchen, Dateien erneut zu erstellen, verwenden Siemachen -p -f / dev / null .

Das -q Option setzt den Fragemodus. Führen Sie keine Befehle aus und drucken Sie nichts, geben Sie einfach einen Exit-Status zurück, der Null ist, wenn die angegebenen Ziele bereits auf dem neuesten Stand sind, ansonsten ungleich Null.

Das -r Option eliminiert die Verwendung der integrierten impliziten Regeln. Löscht auch die Standardliste der Suffixe für Suffixregeln.

Das -s Option deaktiviert den Vorgang. Die Befehle werden nicht gedruckt, wenn sie ausgeführt werden.

Das -S Mit der Option wird der Effekt von deaktiviert-k Möglichkeit. Dies ist nie notwendig, außer bei einer rekursiven Einstellung woher-k kann von der übergeordneten Marke über MAKEFLAGS vererbt werden oder wenn Sie festlegen-k in MAKEFLAGS in Ihrer Umgebung.

Das -t Option berührt Dateien (markiert sie auf dem neuesten Stand, ohne sie wirklich zu ändern), anstatt ihre Befehle auszuführen. Dies wird verwendet, um vorzugeben, dass die Befehle ausgeführt wurden, um zukünftige Aufrufe von make zu täuschen.

Das -v Diese Option druckt die Version des make-Programms sowie ein Copyright, eine Liste der Autoren und einen Hinweis, dass keine Garantie besteht.

Das -w Diese Option gibt eine Nachricht aus, die das Arbeitsverzeichnis vor und nach einer anderen Verarbeitung enthält. Dies kann nützlich sein, um Fehler aus komplizierten Nestern rekursiver Marken zu ermitteln Befehle.

Das -W Datei Option gibt vor, dass das Ziel Datei wurde gerade geändert. Bei Verwendung mit der-n Flag, zeigt Ihnen, was passieren würde, wenn Sie diese Datei ändern würden. Ohne-nes ist fast das gleiche wie das Laufen von aberühren Befehl für die angegebene Datei vor dem Ausführen von make, außer dass die Änderungszeit nur in der Vorstellung von make geändert wird.