letzte Änderung:
TCP-States
Netzwerk
Links
Australien
Wertpapiere
|
make Quick Referenz
Claus Ebert
Version 0.02
1.1 Kommandozeile
make
[
-f
makefile
] [
optionen
] [
ziele
] [
makro definitionen
]
Optionen, Ziele und Makro-Definitionen müssen nicht in der obigen Reihenfolge angegeben werden.
Es können verschiedene Optionen hinter einem Bindestrich kombiniert werden (
-fsn
).
Das Format für Makrodefinitionen ist:
name=string
Die standard Optionen sind:
Option
|
Beschreibung
|
-b
|
Akzeptiere das Makefileformat der vorherigen Implementationen von make.
|
-d
|
Debug-Mode - zeigt detailierte Informationen über interne Flags und
die Datei-Timestamps (modified) an.
|
-e
|
Umgebungsvariablen überschreiben Makro-Definitionen im Makefile.
|
-f
|
Das dieser Option folgende Argument ist das Makefile. Wenn das Argument ein
Bindestrich ist wir der Standard-Input verwendet.
Es können mehrere Makefiles mit der
-f
Opton angegeben werden. (immer nur ein File per
-f
)
Dies Makefiles werden dann wie in einziges behandelt.
|
-i
|
Ignoriere Fehler. (Das gleiche wie
.IGNORE:
im Makefile
|
-k
|
Ein Fehler beendet die arbeit an dem aktuellen Zweig der Hirarchie,
aber nicht fü die anderen Zweige
|
-n
|
Schreibt alle Kommandos auf den Bildschirm, aber führt sie
NICHT
aus
|
-p
|
Schreibt Makro-Definitionen, Suffixes, suffix rules und Makefile-Variable auf den Bildschirm
|
-q
|
Liefert 0 oder nicht null zurück, je nach dem ob alle Ziel-Dateien aktuell sind oder nicht
|
-r
|
Default-Regeln werden abgeschaltet
|
-s
|
Schreibt die ausgeführten Kommandos
NICHT
auf den Bildschirm
(Das gleiche bewirkt auch
.SILENT:
im Makefile
|
-t
|
Toucht alle Zieldateien (setzt den Zeitstemple auf jetzt. Somit erscheinen diese Ziele beim nächsten make-Lauf als up to date)
|
top
1.2 Mögliche Zeilen im Makefile
Make liest jede Zeile des Makefile bis zu deren Ende oder bis es ein
#
findet. Alle Zeichen nach einem
#
werden ignoriert (Comments).
Leere Zeichen werden ebenso ignoriert.
Bei jeder Zeile die mit einem Backslash beendet wird (
\
)
wird davon ausgegangen, das Sie in der nächsten Zeile fortgesetzt wird.
Alle Whitespace-Zeichen (Leerzeichen, Tabulator ...) vor den Backslash und
alleWhitspaces am Anfang der nächsten Zeile werden zu einem einzigen Leerzeichen zusammengefasst.
Dependency line:
|
targets
:[:] [
prerequisites
] [; [
command
] ]
|
|
Legt fest, das
targets
von
prerequisites
abhängt.
Targets
und
prerequisites
müssen mit Leerzeichen oder Tabs getrennt werden.
Leerzeichen vor und nach dem Doppelpunkt sind erlaubt, müssen aber nicht angegeben werden.
Es ist kein Tab vor
targets
erlaubt.
Der doppelte Doppelpunkt erlaubt dass das gleiche
target
in mehreren dependency Zeilen vorkommen kann, wobei jede Dependency-Zeile mindestens eine
von Commando-Zeile haben muss.
Target
namen können nur aus Buchstaben, Zahlen, Punkten und Unterstrichen bestehen.
Andere Zeichen können, je nach verwendeter make-Version, nicht akzeptiert werden.
Nach dem Semicolon kann ein Kommando angegeben werden.
|
Suffix rule:
|
.suffix
[
.suffix
] : [ : ]
|
|
Legt fest, das Dateien die mit dem ersten
Suffix
enden
prerequisits
für Dateien sind, die den gleichen Namen haben, aber mit den zweiten
Suffix
enden (oder keinen suffix haben, wenn kein zweiter suffix angegeben ist).
Es sind keine Leerzeichen zwischen den Suffixes erlaubt.
Alles was nach dem Doppelpunkt kommt wird ignoriert.
Der doppelte Doppelpunkt hat hier keinen Einfluß.
Er ist hier aufgrund der konzistez zu den dependency-Zeilen verboten.
Suffixes
können nur aus Buchstaben, Zahlen, Punkten und Unterstrichen bestehen.
Andere Zeichen können, je nach verwendeter make-Version, nicht akzeptiert werden.
|
Command:
|
tab
[
- @
]
command
|
|
Spezifiziert ein Kommando das ausgeführt wird, wenn das Ziel erzeugt wird.
Das Tab muss auf jeden Fall vorhanden sein.
Es können weiter Leerzeichen oder Tabulatoren folgen.
Nur eine Command-Zeile kann mit einem Tab beginnen.
Ein Bindestrich (
-
) bewirkt, das make den returnstatus des Commands ignoriert (und im Fehlerfall nicht abbricht).
Ein Klammeraffe (
@
) unterdrückt die Ausgabe des Kommandos auf den Bildschirm,
es sei denn make wurde mit der Option
-n
aufgerufen.
|
Macro definition:
|
name
=
string
|
|
Weist dem Makro
name
den Wert
string
zu.
Optionale Leerzeichen vor
name
sind erlaubt,aber die Zeile muss mit einem Tab beginnen.
Optionale Leerzeichen sind erlaubt vor und nach dem Gleich-Zeichen (
=
). Diese werden von make entfernt.
Wenn der
string
einen Backslash (
\
) gefolgt von einem NewLine (Zeilenumbruch) enthält setzt make den string in der folgenden Zeile fort.
Ein Leerzeichen wird anstelle der Backsalshes und des Newline-Zeichens eingesetzt.
Zusätzlich werden alle Whitespaces (Leerzeichen, Tab's ...) vor dem Backslash und
am Anfang der folgenden Zeile zu einem einzigen Leerzeichen zusammengefasst.
Alles andere in
string
wird dem Makro als Wert zugewiesen einschließlich aller abschließenden Whitespaces und
Anführungszeichen.
Abhängig von den Version von make können auch andere Zeichen akzeptiert werden.
|
Include statements:
|
include
file
|
|
(Nicht in allen make-varianten verfügbar.
Liest iden inhalt von
file
als wäre es teil des aktuellen Makefiles.
Die Include-Datei kann als Makro definiert werden, wenn die Makro-Definition vor
dem Include-Statement steht.
Das Wort
include
muss am anfang der Zeile Stehen. und muss von einem Leerzeichen oder Tab gefolgt werden.
Einige Implementationen von make erlauben mehrere Dateinamen, getrennt durch Leerzeichen oder Tabs.
|
top
1.3 Interne Makros
Hier werden die Makros aufgelistet, die eine spezielle bedeutung für make haben.
Makro
|
Bedeutung
|
$?
|
Liste der prerequisites, die sich verändert haben.
Kann
nicht
in suffix-rules verwendet werden.
|
$@
|
Der Name des aktuellen targets (Ziel), außer in Makefiles die Libraries erzeugen
(dort ist es der Librarie-Name).
Kann überall verwendet werden.
|
$$@
|
Der Name des aktuellen targets (Ziel).
Kann nur auf der rechten Seite des Doppelpunktes in dependency-Zeilen verwendet werden.
|
$<
|
Der Name des aktuellen prerequisites, das sich verändert hat.
Kann nur in suffix-rules und im
.DEFAULT
Eintrag verwendet werden.
|
$*
|
Der Name (ohne suffix) des aktuellen prerequisites, das sich verändert hat.
Kann nur in suffix-rules verwendet werden.
|
$%
|
Der Name der correspondierenden
.o
Datei wenn das Ziel eine Library ist.
Kann überall verwendet werden.
|
top
1.4 Makro Modifizierer
sind nicht in allen Version von make verfügbar
Modifier
|
Beschreibung
|
D
|
Der Direktory-Teil aller internen Makros außer
$?
. Gültige Beispiele:
${@D},$${@D},${<D},${*D}, und ${%D}
|
F
|
Der Datei-Anteil aller interner Makros außer
$?
. Gültige Beispiele
${@F},$${@F},${<F},${*F}, und ${%F}
|
top
1.5 Spezielle Makros
Makro
|
Beschreibung
|
SHELL
|
Legt fest, welche Shell verwendet wird um Commandos auszuführen.
Wenn dieses Makro nicht definiert ist verwenden einige make-Implementationen
den Wert der
SHELL
Umgebungsvaribale.
Andere Implementationen setzen dann das
SHELL
-Makro auf
/bin/sh
|
VPATH
|
(Nicht in allen make-varianten verfügbar)
Spezifiziert eine Liste von Verzeichnissen, in denen
make
nach den
prerequisits
sucht falls Sie sich nicht im aktuellen Verzeichnis befinden.
|
top
1.6 Spezielle Targets (Ziele)
Target
|
Beschreibung
|
.DEFAULT:
|
Die
Kommandos
die mit diesem Target verknüpft sind werden ausgeführt falls
make
keine passenden Einträge im Makefile findet
|
.IGNORE:
|
Ignoriert Fehler. (Das gleiche wir die
-i
Option).
|
.PRECIOUS:
|
Dateien, die hier spezifiziert sind, werden bei einem Abbruch nicht gelöscht.
(z.B: Beenden mit Ctrl-C oder falls ein Kommando einen Fehlercode zurückliefert)
|
.SILENT:
|
Führt Kommandos aus aber schreibt sie nicht auf den Bildschirm.
(Das gleiche wie die
-s
Option)
|
.SUFFIXES:
|
Die
prerequisites
die unter diesem Taget angegeben werden sind suffixe,
die zum erzeugen der Zieles notwendig sind.
Diese Suffixe sollten in den Suffix-Rules definiert werden.
Falls keine Suffixe angegeben sind, löscht dieses Taget die existierende suffix-Liste.
Die Suffixe müssen mit Leerzeichen oder mit Tab's getrennt sein.
|
top
|