make: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Der Shell-Befehl <b>make</b> übersetzt beim Kompilieren den Quelltext und installiert das fertige Programm anhand der Variablen und Anweisungen in einer Steuer...) |
Michi (Diskussion | Beiträge) |
||
Zeile 110: | Zeile 110: | ||
== Weblinks == | == Weblinks == | ||
{{ | {{Weblinks1|{{url_dewikipedia|Make|make}} | ||
}} | |||
Version vom 27. März 2009, 10:55 Uhr
Der Shell-Befehl make übersetzt beim Kompilieren den Quelltext und installiert das fertige Programm anhand der Variablen und Anweisungen in einer Steuerdatei mit dem Namen "GNU-makefile", "makefile" oder "Makefile". Diese Datei wird genau in dieser Reihenfolge im aktuellen Verzeichnis gesucht.
LATEX-Anwender verwenden make bei grösseren Projekten gern dazu, ein Postscript- oder PDF-Dokument neu zu kompilieren und zu erstellen, wenn eine oder mehrere der Quelldateien verändert wurden.
Bei Bedarf kann make z. B. auch ein Sicherungsskript anstossen, wenn auf der Festplatte eine oder mehrere Dateien verändert wurden.
Syntax
# Kommentar Ziel: [vorausgesetzte Dateien] Befehl Befehl ...
Optionen
Option | Beschreibung |
---|---|
-d | Ausgabe von Debugging-Informationen. Geeigneter Aufruf:
$ make -d | more |
Steuerdatei
Die Steuerdatei heisst üblicherweise "GNU-makefile", "makefile" oder "Makefile".
Variable | Beschreibung |
---|---|
CC | Compiler |
CFLAGS | Optionen des Compilers |
DEST | Zielverzeichnis, wohin das kompiliert Programm schliesslich kopiert wird. Der Wert dieser Variablen muss geändert werden, wenn z. B. "/opt/program" als Zielverzeichnis verwendet werden soll. |
MAN | Pfad zur Manual-Seite. |
MAN1 | Pfad zur Manual-Seite |
Ausser Variablen stehen in der Steuerdatei auch sogenannte Ziele (engl. target). Dies sind Zeilen, die die Optionen beim Aufruf von "make" festlegen. Ziele stehen am Anfang einer Zeile und schliessen mit einem Doppelpunkt (z. B. "uninstall: "). Hinter dem Doppelpunkt folgen (optional) die Dateien, dir das Ziel zum Erzeugen voraussetzt. Danach folgen durch einen Tabulator (keine Leerzeichen!) eingerückt zeilenweise die Befehle, also diejenigen Aktionen, die das Programm im Fall erfüllter Abhängigkeiten ausführen soll. Lange Zeilen können mit einem Rückstrich ( \ ) am Zeilenende umgebrochen werden. Kommentare stehen hinter einem Doppelkreuz.
Variablen
Variable | Beschreibung |
---|---|
$@ | Das aktuelle Ziel. |
$? | Die veränderten Abhängigkeiten, also die Dateien, die immer hinter dem Doppelpunkt des Ziels stehen. |
Definition einer Variable.
TEXDATEIEN = kap01.tex kap02.tex kap03.tex \ kap04.tex kap05.tex kap06.tex\ kap07.tex buch.tex buch.dvi: $(TEXDATEIEN) latex buch
Verwendung
Übergabe eines Steuerdateinamens, der von make nicht von sich aus als Makefile identifiziert wird.
$ make -f steuerdatei
Angabe des Verzeichnisses, in dem make arbeiten soll.
$ make -C ~/buch
Falls sich an den Quelldateien nichts geändert hat und make dennoch zur Arbeit gezwungen werden soll.
$ make -B buch.pdf
Beispiel: Zusammenarbeit mit LATEX
Gegeben ist ein Makefile, das beim Erstellen eines Buchs mit LATEX hilft. Das Buch selbst liegt in mehreren Dokumenten vor, z. B. gibt es für jedes Kapitel eine eigene Datei. Aus diesen einzelnen Dokumenten bildet LaTeX die Datei "buch.tex".
Zuerst wird eine DVI-Datei erstellt. Make soll den Befehl "latex" nur aufrufen, wenn sich eine der Quelldateien verändert hat.
buch.dvi: kap01.tex kap02.tex kap03.tex \ kap04.tex kap05.tex kap06.tex\ kap07.tex buch.tex latex buch
Zur automatischen Erzeugung einer Postscript-Datei wird das Programm Dvips verwendet. Auch Dvips wird nur aufgerufen, wenn sich die DVI-Datei des ersten Zieles verändert hat.
buch.ps: buch.dvi dvips -q -o buch.ps buch
Bei Bedarf kann aus der Postscript-Datei anschliessend eine PDF-Datei erstellt werden.
buch.pdf: buch.ps ps2pdf buch.ps buch.pdf
Je nach Bedarf lohnt sich eine ordentliche Sicherung, bei der die Tex-, PostScript- und PDF-Dateien mit tar zusammengepackt, gezippt und mittels scp auf einen entfernten Rechner kopiert werden.
backup: kap01.tex kap02.tex kap03.tex \ kap04.tex kap05.tex kap06.tex\ kap07.tex buch.tex buch.ps buch.pdf tar cvfj backup.tar.bz2 *.tex buch.ps buch.pdf scp backup.tar.bz2 mik@10.0.1.1:
Das so erstellte Makefile kann auf verschiedene Arten aufgerufen werden.
- Bei Aufruf von "make" wird lediglich das erste Ziel abgearbeitet, es wird also eine DVI-Datei erstellt, falls mindestens eine der Tex-Dateien verändert wurde.
- Alternativ kann dem Befehl beim Aufruf ein anderes Ziel übergeben werden, z. B. "make backup", um eine Sicherungskopie zu erstellen.