make

Aus Mikiwiki
Wechseln zu: Navigation, Suche

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.

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen