corner image
home ·make Quick Referenz


letzte Änderung:
TCP-States
Netzwerk
Links
Australien
Wertpapiere

make Quick Referenz

Claus Ebert

Version 0.02

1.make Quick referenz


1. make Quick referenz

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
  ©2016· Claus Ebert · Emailemail senden