Makefile - Makros
Das makeMit dem Programm können Sie Makros verwenden, die Variablen ähneln. Makros werden in einem Makefile als = Paare definiert. Ein Beispiel wurde unten gezeigt -
MACROS = -me
PSROFF = groff -Tps
DITROFF = groff -Tdvi
CFLAGS = -O -systype bsd43
LIBS = "-lncurses -lm -lsdl"
MYFACE = ":*)"
Spezielle Makros
Vor dem Ausgeben eines Befehls in einem Zielregelsatz sind bestimmte spezielle Makros vordefiniert -
$ @ ist der Name der zu erstellenden Datei.
$? ist der Name der geänderten Angehörigen.
Zum Beispiel könnten wir eine Regel wie folgt verwenden:
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) $? $(LDFLAGS) -o $@
Alternatively:
hello: main.cpp hello.cpp factorial.cpp
$(CC) $(CFLAGS) [email protected] $(LDFLAGS) -o $@
In diesem Beispiel steht $ @ für Hallo und $? oder $ @. cpp nimmt alle geänderten Quelldateien auf.
In den impliziten Regeln werden zwei weitere spezielle Makros verwendet. Sie sind -
$ <Der Name der zugehörigen Datei, die die Aktion verursacht hat.
$ * das von Ziel- und abhängigen Dateien gemeinsam genutzte Präfix.
Die übliche implizite Regel gilt für die Erstellung von .o (Objekt) -Dateien aus .cpp (Quelldateien).
.cpp.o:
$(CC) $(CFLAGS) -c $<
Alternatively:
.cpp.o:
$(CC) $(CFLAGS) -c $*.c
Herkömmliche Makros
Es gibt verschiedene Standardmakros. Sie können sie sehen, indem Sie "make -p" eingeben, um die Standardeinstellungen auszudrucken. Die meisten sind aus den Regeln, in denen sie verwendet werden, ziemlich offensichtlich.
Diese vordefinierten Variablen, dh Makros, die in impliziten Regeln verwendet werden, fallen in zwei Klassen. Sie sind wie folgt -
Makros, die Namen von Programmen sind (z. B. CC)
Makros, die Argumente der Programme enthalten (z. B. CFLAGS).
Unten finden Sie eine Tabelle mit einigen allgemeinen Variablen, die als Namen von Programmen in integrierten Regeln für Makefiles verwendet werden.
Sr.Nr. | Variablen & Beschreibung |
---|---|
1 | AR Archivierungsprogramm; Standard ist "ar". |
2 | AS Programm zum Kompilieren von Assembly-Dateien; Standard ist "as". |
3 |
CC Programm zum Kompilieren von C-Programmen; Standard ist "cc". |
4 |
CO Programm zum Auschecken von Dateien aus RCS; Standard ist "co". |
5 |
CXX Programm zum Kompilieren von C ++ - Programmen; Standard ist "g ++". |
6 |
CPP Programm zum Ausführen des C-Präprozessors mit Ergebnissen zur Standardausgabe; Standard ist "$ (CC) -E". |
7 |
FC Programm zum Kompilieren oder Vorverarbeiten von Fortran- und Ratfor-Programmen; Standard ist "f77". |
8 |
GET Programm zum Extrahieren einer Datei aus SCCS; Standard ist "get". |
9 |
LEX Programm zur Umwandlung von Lex-Grammatiken in Quellcode; Standard ist "Lex". |
10 |
YACC Programm zur Umwandlung von Yacc-Grammatiken in Quellcode; Standard ist "yacc". |
11 |
LINT Programm zum Ausführen von Flusen im Quellcode; Standard ist "Flusen". |
12 |
M2C Programm zum Kompilieren des Modula-2-Quellcodes; Standard ist "m2c". |
13 |
PC Programm zum Kompilieren von Pascal-Programmen; Standard ist "PC". |
14 |
MAKEINFO Programm zum Konvertieren einer Texinfo-Quelldatei in eine Info-Datei; Standard ist "makeinfo". |
15 |
TEX Programm zum Erstellen von TeX-DVI-Dateien aus TeX-Quellen; Standard ist "tex". |
16 |
TEXI2DVI Programm zum Erstellen von TeX-DVI-Dateien aus Texinfo-Quellen; Standard ist "texi2dvi". |
17 |
WEAVE Programm zur Übersetzung des Web in TeX; Standard ist "weben". |
18 |
CWEAVE Programm zur Übersetzung von C Web in TeX; Standard ist "cweave". |
19 |
TANGLE Programm zur Übersetzung des Web in Pascal; Standard ist "Tangle". |
20 |
CTANGLE Programm zur Übersetzung von C Web in C; Standard ist "ctangle". |
21 |
RM Befehl zum Entfernen einer Datei; Standard ist "rm -f". |
Hier ist eine Tabelle mit Variablen, deren Werte zusätzliche Argumente für die obigen Programme sind. Die Standardwerte für alle diese Werte sind die leere Zeichenfolge, sofern nicht anders angegeben.
Sr.Nr. | Variablen & Beschreibung |
---|---|
1 |
ARFLAGS Flags für das Archivpflegeprogramm; Standard ist "rv". |
2 |
ASFLAGS Zusätzliche Flags, die dem Assembler gegeben werden sollen, wenn sie explizit für eine .s- oder .S-Datei aufgerufen werden. |
3 |
CFLAGS Zusätzliche Flags für den C-Compiler. |
4 |
CXXFLAGS Zusätzliche Flags für den C-Compiler. |
5 |
COFLAGS Zusätzliche Flags für das RCS-Co-Programm. |
6 |
CPPFLAGS Zusätzliche Flags für den C-Präprozessor und die Programme, die ihn verwenden (z. B. C- und Fortran-Compiler). |
7 |
FFLAGS Zusätzliche Flags für den Fortran-Compiler. |
8 |
GFLAGS Zusätzliche Flags für das SCCS-Get-Programm. |
9 |
LDFLAGS Zusätzliche Flags, die Compilern gegeben werden sollen, wenn sie den Linker "ld" aufrufen sollen. |
10 |
LFLAGS Zusätzliche Flaggen für Lex. |
11 |
YFLAGS Zusätzliche Flaggen für Yacc. |
12 |
PFLAGS Zusätzliche Flags für den Pascal-Compiler. |
13 |
RFLAGS Zusätzliche Flags für den Fortran-Compiler für Ratfor-Programme. |
14 |
LINTFLAGS Zusätzliche Fahnen für Flusen. |
NOTE - Sie können alle von impliziten Regeln verwendeten Variablen mit der Option '-R' oder '--no-builtin-variables' abbrechen.
Sie können Makros auch in der Befehlszeile wie unten gezeigt definieren -
make CPP = /home/courses/cop4530/spring02