make |
Werkzeug zum Erzeugen von Systemen
|
| |
Regeln |
Abhängigkeiten zwischen Quellen und
zu erzeugenden Dateien (Zielen)
|
| |
Syntax |
Ziel1 : Quelle11 Quelle12 ...
Kommando11
Kommando12
...
Ziel2 : Quelle21 Quelle22 ...
Kommando21
...
|
| |
|
vor den Kommandos muss ein Tabulatorzeichen stehen !!!
|
| |
Zeitstempel |
des letzten Schreibens steuern
die Anwendung der Regeln.
|
| |
Aufruf |
|
| |
.1 |
rekursiv für alle Quellen
|
|
|
| |
2. |
mindestens eine Quelle neuer als das Ziel:
==>
Kommando(s) ausführen
|
| |
neuer |
|
.a |
Ziel und Quelle existieren
==>
Zeitstempel des letzten Schreibens vergleichen
|
.b |
Ziel(datei) existiert nicht:
==>
Quelle neuer als das Ziel
|
.c |
Ziel existiert und keine Regel für das Ziel:
==>
Ziel aktuell
|
.d |
Ziel existiert nicht und keine Regel für das Ziel:
==>
Fehler
|
| |
Makros |
Text-Variablen zur Vermeidung von Codeverdopplung,
für Abkürzungen.
|
| |
Syntax |
|
| |
Definition |
|
| |
Anwendung |
|
| |
Umgebungs-
Variablen |
stehen als Makros zur Verfügung.
|
| |
Kommandozeilen-
Parameter |
zum Setzen von Makros
|
|
|
| |
vordefinierte Makros |
$@ | aktuelles Ziel |
$* | aktuelles Ziel ohne Extension |
$$ | $-Zeichen |
$< | erste Quelle |
$^ | alle Quellen |
$(CC) | C-Compiler |
$(CFLAGS) | C-Compiler Optionen |
$(MAKE) | make Programm |
|
| |
default-
Regeln |
Regeln für eine Klasse von Dateien
|
| |
.-Regeln |
alte make-Variante: Etwas unflexibel
|
|
.c.o:
$(CC) $(CFLAGS) -c $<
.ppm.gif:
ppmtogif $< $@
.SUFFIXES : .o .c .ppm .gif
|
| |
%-Regeln |
GNU make: flexibler
|
|
%.o : %.c
$(CC) $(CFLAGS) -c $<
%.gif : %.ppm
ppmtogif $< $@
|
| |
|
Bilder konvertieren und erzeugen von Varianten mit convert
|
| |
Optionen |
für make
|
|
-n | Trockenkurs |
-p | alle Makros und Regeln |
-r | ohne default-Regeln |
-f | explizite Makefile-Angabe |
|
| |
GNU make
|
|