Zum Inhalt springen

Make

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. Dezember 2003 um 22:11 Uhr durch 62.134.126.26 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Kurzerklärung

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.

Alternativen zum Make-Befehl

(erhebt keinen Anspruch auf Vollständigkeit)

  • Derivate von Make, sind z.B. GNU Make, nmake (Microsoft), JMake, Opus Make, MKS.
  • Integrierte Entwicklungsumgebung (IDE). Dort wird das Ganze in eine graphische 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.

Erklärung

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.

Beispiel

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.

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 - 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.

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.

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