Makefile - Anweisungen

Es gibt zahlreiche Richtlinien in verschiedenen Formen. DasmakeDas Programm auf Ihrem System unterstützt möglicherweise nicht alle Anweisungen. Bitte überprüfen Sie, ob Ihremake unterstützt die Richtlinien, die wir hier erläutern. GNU make unterstützt diese Richtlinien.

Bedingte Richtlinien

Die bedingten Richtlinien sind -

  • Das ifeqDie Direktive beginnt mit der Bedingung und gibt die Bedingung an. Es enthält zwei Argumente, die durch ein Komma getrennt und von Klammern umgeben sind. Beide Argumente werden variabel ersetzt und anschließend verglichen. Die Zeilen des Makefiles nach dem ifeq werden eingehalten, wenn die beiden Argumente übereinstimmen. Andernfalls werden sie ignoriert.

  • Das ifneqDie Direktive beginnt mit der Bedingung und gibt die Bedingung an. Es enthält zwei Argumente, die durch ein Komma getrennt und von Klammern umgeben sind. Beide Argumente werden variabel ersetzt und anschließend verglichen. Die Zeilen des Makefiles nach dem ifneq werden eingehalten, wenn die beiden Argumente nicht übereinstimmen. Andernfalls werden sie ignoriert.

  • Das ifdefDie Direktive beginnt mit der Bedingung und gibt die Bedingung an. Es enthält ein einzelnes Argument. Wenn das angegebene Argument wahr ist, wird die Bedingung wahr.

  • Das ifndefDie Direktive beginnt mit der Bedingung und gibt die Bedingung an. Es enthält ein einzelnes Argument. Wenn das angegebene Argument falsch ist, wird die Bedingung wahr.

  • Das elseDie Direktive bewirkt, dass die folgenden Zeilen befolgt werden, wenn die vorherige Bedingung fehlgeschlagen ist. Im obigen Beispiel bedeutet dies, dass der zweite alternative Verknüpfungsbefehl verwendet wird, wenn die erste Alternative nicht verwendet wird. Es ist optional, ein anderes in einer Bedingung zu haben.

  • Das endifDirektive beendet die Bedingung. Jede Bedingung muss mit einem Endif enden.

Syntax von Bedingungsrichtlinien

Die Syntax einer einfachen Bedingung ohne andere lautet wie folgt:

conditional-directive
   text-if-true
endif

Der Text-if-true kann eine beliebige Textzeile sein, die als Teil des Makefiles betrachtet wird, wenn die Bedingung erfüllt ist. Wenn die Bedingung falsch ist, wird stattdessen kein Text verwendet.

Die Syntax einer komplexen Bedingung lautet wie folgt:

conditional-directive
   text-if-true
else
   text-if-false
endif

Wenn die Bedingung wahr ist, wird text-if-true verwendet. Andernfalls wird text-if-false verwendet. Der Text-if-false kann eine beliebige Anzahl von Textzeilen sein.

Die Syntax der Bedingungsanweisung ist dieselbe, unabhängig davon, ob die Bedingung einfach oder komplex ist. Es gibt vier verschiedene Richtlinien, die verschiedene Bedingungen testen. Sie sind wie gegeben -

ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"

Entgegengesetzte Richtlinien der oben genannten Bedingungen lauten wie folgt:

ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"

Beispiel für Bedingungsrichtlinien

libs_for_gcc = -lgnu
normal_libs =

foo: $(objects)
ifeq ($(CC),gcc)
   $(CC) -o foo $(objects) $(libs_for_gcc)
else
   $(CC) -o foo $(objects) $(normal_libs)
endif

Die Include-Richtlinie

Das include directive erlaubt makeum das Lesen des aktuellen Makefiles auszusetzen und ein oder mehrere andere Makefiles zu lesen, bevor Sie fortfahren. Die Direktive ist eine Zeile im Makefile, die wie folgt aussieht:

include filenames...

Die Dateinamen können Muster für Shell-Dateinamen enthalten. Zusätzliche Leerzeichen sind am Zeilenanfang zulässig und werden ignoriert, eine Registerkarte ist jedoch nicht zulässig. Wenn Sie beispielsweise drei ".mk" -Dateien haben, nämlich "a.mk", "b.mk" und "c.mk" und $ (bar), wird es zu "bish bash" erweitert, und dann zu den folgenden Ausdruck.

include foo *.mk $(bar)

is equivalent to:

include foo a.mk b.mk c.mk bish bash

Wenn der makeverarbeitet eine include-Direktive, unterbricht das Lesen des Makefiles und liest nacheinander aus jeder aufgelisteten Datei. Wenn das erledigt ist,make setzt das Lesen des Makefiles fort, in dem die Direktive erscheint.

Die Override-Richtlinie

Wenn eine Variable mit einem Befehlsargument festgelegt wurde, werden normale Zuweisungen im Makefile ignoriert. Wenn Sie die Variable im Makefile festlegen möchten, obwohl sie mit einem Befehlsargument festgelegt wurde, können Sie eine Überschreibungsanweisung verwenden. Dies ist eine Zeile, die wie folgt aussieht:

override variable = value

or

override variable := value