|
|
| Table of contents |
|
2 Alternativen zum Make-Befehl 3 Erklärung 4 Beispiel 5 Prinzip 6 Umfeld 7 Siehe auch 8 Literatur |
make (engl. - machen) ist ein Computerprogramm, das Kommandos in Abhängigkeit von Bedingungen ausführt.
Es wird hauptsächlich im Unixbereich bei der Softwareentwicklung eingesetzt (z. B. mit C, C++ etc.) .
Er wird z. B. genutzt, um in einem Projekt, das aus vielen verschiedenen Dateien mit Quellcode besteht, automatisiert alle Arbeitsschritte (Übersetzung, Bindung, Dateien kopieren, etc.) zu steuern, bis hin zum fertigen ausführbaren Programm.
(erhebt keinen Anspruch auf Vollständigkeit)
Make liest ein so genanntes Makefile, in dem der Erstellungsprozess von Programmen formalisiert erfasst ist.
Dieser 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 das 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. Alle Abhängigkeiten müssen vollständig und korrekt im Makefile beschrieben sein - was bei großen Projekten nicht leicht zu realisieren ist. Insbesondere bei Programmänderungen oder -erweiterungen können neue Abhängigkeiten entstehen. Diese müssen sofort im Makefile eingetragen werden.
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.
'make' hat sich im großen Bereichen der Software-Entwicklung durchgesetzt, hat aber -- gerade bei großen Projekten -- einige Probleme (siehe Literatur). Daher wurde immer wieder versuche gemacht, einen "Nachfolger" zu finden und zu ettablierwen (siehe Alternativen).
Ein Programm "prog" soll aus zwei Quelldateien "filea.c" und "fileb.c" so erzeugt werden, dass immer möglichst wenig Übersetzungs- und Bindevorgänge benötigt werden, wenn nur eine der beiden Quellen geändert wird.
filea.obj: filea.c
CC -c filea.c
fileb.obj: fileb.c
CC -c fileb.c
Der Erstellungsvorgang wird dann auf der Kommandozeile mittels make prog gestartet.
Das vorliegende Beispiel zeigt lediglich die einfachste Form eines Makefiles, es gibt Methoden wie z. B. Patternregeln, die das Makefile einfacher machen.
Ein Makefile gibt eine Abhängigkeit von vielen Dateien untereinander vor.
Starke Verwendung erfährt Make in der Welt des Open Source, deren Projekte im Quellcode vorliegen.
Kurzerklärung
Alternativen zum Make-Befehl
Erklärung
Beispiel
prog: filea.obj fileb.obj
LD -o prog filea.obj fileb.obj
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 - dies 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.Prinzip
Umfeld
Die Vorgehensweise, um daraus ein ausführbares Programm zu machen, ist meist wie folgt:
Siehe auch
Literatur