Make
Kurzerklärung
make ist ein Computerprogramm, das hauptsächlich im Unixbereich beim Übersetzen von Programmquelltexten (wie C, C++ etc.) eingesetzt wird.
Er wird z.B. genutzt, um ein Projekt, das aus verschiedenen Dateien mit Quellcode besteht, automatisiert zu einem einzigen ausführbaren Programm zu verschweissen.
Alternativen zum Make Befehl
(erhebt keinen Anspruch auf Vollständigkeit)
- Derivate von Make, sind z.B. GNU Make, nmake (Microsoft), JMake, Opus Make, MKS.
- Apache Ant. XML-basiertes System mit demselben Zweck, das mit Hilfe von Java erweitert werden kann. Siehe dazu http://jakarta.apache.org/ant/.
- Integrierte Entwicklungsumgebung (IDE). Dort wird das Ganze in eine graphisches Benutzerschnittstelle (GUI) verpackt und ist subjektiv leichter zu handhaben. Beispiel unter GNU/Linux ist KDE KDevelop, das es erlaubt, C, C++ für die Konsole und QT und KDE Programme für KDE zu erstellen. Ein Beispiel unter Windows ist der Borland C++ Builder.
Wortherkunft
Make ist ein englisches Wort und heißt wörtlich übersetzt machen.
Erklärung
Make liest ein sogenanntes Makefile, in dem der Erstellungsprozeß von Programmen formalisiert erfaßt ist. Diese Formalisierung beschreibt, welche Quelldateien der Compiler zu welchen Objektdateien verarbeitet, und welche Objektdateien vom Linker dann zu Programmbibliotheken oder ausführbaren Programmen verbunden werden. Wenn die Makefile vom make-Programm abgearbeitet wird, wird eine Umwandlung etwa einer Quelldatei in eine Objektdatei nur dann vorgenommen, wenn die Quelldatei neuer als die Objektdatei ist. Bei der Entwicklung großer Programmpakete mit vielen Quelldateien und vielen ausführbaren Programmen entfällt so die Notwendigkeit, bei einer Reihe kleiner Veränderungen alle Compilationen erneut durchzuführen. Der Erfolg dieser 'Sparmaßnahme' hängt natürlich von der korrekten Angabe der Dateiabhängigkeiten ab.
Die von make ausgeführten Befehle sind nicht auf Compiler oder Linker beschränkt. Jedes Werkzeug, das der Kommandozeileninterpreter zur Verfügung stellt, kann benutzt werden, um die gewünschten Dateimanipulationen zu erreichen. So kann man z.B. automatisch Bilder aus Texten erzeugen.
Beispiel
Ein Programm "prog" soll aus zwei Quelldateien "filea.c" und "fileb.c" so erzeugt werden, daß immer möglichst wenig Übersetzungs- und Bindevorgänge benötigt werden, wenn nur eine der beiden Quellen geändert wird.
prog: filea.obj fileb.obj LD -o prog filea.obj fileb.obj
filea.obj: filea.c CC -c filea.c
fileb.obj: fileb.c CC -c fileb.c
Die erste Zeile bedeutet, dass das Programm prog aus den Teilen filea.obj und fileb.obj hergestellt wird. Die darauffolgende Zeile gibt an, wie mit welchem Werkzeug - hier ein Linker - das erfolgen soll. Die dritte Zeile gibt an, dass filea.obj aus filea.c hergestellt wird und zwar in der vierten Zeile durch Aufruf von cc dem C-Kompiler. Die fünfte und sechste Zeile sind analog.
Der Erstellungsvorgang wird dann auf der Kommandozeile mittels make prog gestartet.
Das vorliegende Beispiel zeigt lediglich die simpelste Form eines Makefiles, es gibt Methoden wie z.B. Patternregeln, die das Makefile einfacher machen.
Prinzip
Ein Makefile gibt eine Abhängigkeit von vielen Dateien untereinander vor.
Umfeld
Starke Verwendung erfährt Make in der Welt des Open Source, deren Projekte im Quellcode vorliegen. Die Vorgehensweise, um daraus ein ausführbares Programm zu machen, ist meist wie folgt;
- Archiv auspacken, siehe tar-Befehl
- in das Verzeichnis wechseln (per cd)
- auf der Befehlszeile './configure' eingeben (hilfreich ist immer ein Blick in alle 'INSTALL' oder 'README' genannten Dateien)
- danach 'make' und meistens noch ein 'make install' ausführen, um das Programm zu installieren, d.h. in die entsprechenden Verzeichnisse zu kopieren