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