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.

Einige vordefinierte Variablen in GNU make
VariableBedeutung
$%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.
ARName des Archivs erhalt Programm (Standardwert: ar).
ARFLAGSFlags für das Archiv-Pflege-Programm (Standardwert: rv).
WIEName des Assembler-Programm, das die assemblylanguage konvertiert Code (Standardwert: as) zu widersprechen.
ASFLAGSFlags für den Monteur.
CCDer Name der C-Compiler (Standardwert: cc).
CFLAGSFlags, die an den C-Compiler übergeben werden.
COName des Programms, das eine Datei von RCS (Default extrahiert: co).
COFLAGSFlags für die RCS co Programm.
CPPName der C-Präprozessor (Standardwert: $ (CC) -E).
CPPFLAGSFlags für den C-Präprozessor.
CXXName des C ++ Compiler (Standardwert: g ++).
CXXFLAGSFlags, die an die C ++ Compiler übergeben werden.
FCName der Fortran-Compiler (Standardwert: f77).
FFLAGSFlags für die Fortran-Compiler.
LDFLAGSFlags für den Compiler, wenn es soll thelinker aufrufen ld.
RMName des Befehls eine Datei (Standardwert: rm -f) zu löschen.

Menü