Linux: Variablen (oder Makros) in der GNU make-Dienstprogramm
Die GNU machen Dienstprogramm in Linux kommt zu Ihrer Rettung durch das Lesen und Interpretieren Make-Datei. Neben der grundlegenden Fähigkeiten des Gebäudes Ziele von Abhängigen, GNU machen enthält viele Funktionen, die es Ihnen leicht, die Abhängigkeiten und Regeln für den Aufbau eines Ziels von seinen Familienangehörigen zum Ausdruck bringen.
Wenn Sie mithilfe von GCC mit den gleichen Optionen, um eine große Anzahl von C ++ Dateien zu erstellen, beispielsweise die Eingabe der Optionen für jede Datei mühsam ist. Sie können durch die Definition einer Variable oder Makro in machen diese sich wiederholende Aufgabe zu vermeiden, wie folgt:
# Definieren Sie Makros für den Namen des compilerCXX = g ++ # ein Makro für die flagsCXXFLAGS GCC definieren = -O2 -g -mcpu = i686 # Eine Regel ein Objekt fileform.o für den Bau: form.C form.h $ (CXX) -c $ (CXXFLAGS) form.C
In diesem Beispiel sind CXX und CXXFLAGS Variablen machen. (GNU machen zieht sie zu nennen Variablen, aber die meisten Unix machen Dienstprogramme nennen sie Makros.)
So verwenden Sie eine Variable überall in der Make-Datei, mit einem Dollarzeichen beginnen ($) Durch die Variable in Klammern. GNU machen alle Vorkommen einer Variablen mit seinen Definition- ersetzt somit ersetzt sie alle Vorkommen $(CXXFLAGS) Mit der Zeichenfolge -O2 -g -mcpu = i686.
GNU make hat mehrere vordefinierte Variablen, die eine besondere Bedeutung haben. In dieser Tabelle sind diese Variablen. Neben den hier aufgeführten Variablen, GNU machen berücksichtigt alle Umgebungsvariablen (wie PFAD und ZUHAUSE), Um Variablen als auch vorgegeben werden.
Variable | Bedeutung |
---|---|
$% | Mitglied Namen für Ziele, die Archive sind. Wenn das ZiellibDisp.a (image.o), ist beispielsweise $% image.o. |
$ * | Name der Zieldatei ohne die Erweiterung. |
$ + | Namen aller abhängigen Dateien mit doppelten Abhängigkeiten, in der Reihenfolge ihres Auftretens aufgelistet. |
$ Lt; | Der Name des ersten abhängige Datei. |
$? | Namen aller abhängigen Dateien (mit Leerzeichen zwischen den Namen), die neuer als das Ziel. |
$ @ | Vollständiger Name des Ziels. Wenn das Ziel libDisp.a image.o) ist, beispielsweise $ @ ist libDisp.a. |
$ ^ | Namen aller abhängigen Dateien, mit Räumen zwischen den names.Duplicates werden aus den abhängigen Dateinamen entfernt. |
AR | Name des Archivs erhalt Programm (Standardwert: ar). |
ARFLAGS | Flags für das Archiv-Pflege-Programm (Standardwert: rv). |
WIE | Name des Assembler-Programm, das die assemblylanguage konvertiert Code (Standardwert: as) zu widersprechen. |
ASFLAGS | Flags für den Monteur. |
CC | Der Name der C-Compiler (Standardwert: cc). |
CFLAGS | Flags, die an den C-Compiler übergeben werden. |
CO | Name des Programms, das eine Datei von RCS (Default extrahiert: co). |
COFLAGS | Flags für die RCS co Programm. |
CPP | Name der C-Präprozessor (Standardwert: $ (CC) -E). |
CPPFLAGS | Flags für den C-Präprozessor. |
CXX | Name des C ++ Compiler (Standardwert: g ++). |
CXXFLAGS | Flags, die an die C ++ Compiler übergeben werden. |
FC | Name der Fortran-Compiler (Standardwert: f77). |
FFLAGS | Flags für die Fortran-Compiler. |
LDFLAGS | Flags für den Compiler, wenn es soll thelinker aufrufen ld. |
RM | Name des Befehls eine Datei (Standardwert: rm -f) zu löschen. |