Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenMontag, 16. September 2019 

Make


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
make (engl. - machen ) ist ein Computerprogramm das Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich Unixbereich bei der Softwareentwicklung eingesetzt (z. B. mit C C++ etc.) .

Er wird z. B. genutzt um einem Projekt das aus vielen verschiedenen Dateien mit Quellcode besteht automatisiert alle Arbeitsschritte ( Übersetzung Bindung Dateien kopieren etc.) zu steuern bis zum fertigen ausführbaren Programm .

Inhaltsverzeichnis

Erklärung

Make liest ein so genanntes Makefile in dem der Erstellungsprozess von Programmen erfasst ist. Diese Formalisierung beschreibt welche Quelldateien der Compiler zu welchen Objektdateien verarbeitet und welche vom Linker dann zu Programmbibliotheken oder ausführbaren Programmen verbunden werden. Alle Schritte erfolgen unter der Abhängigkeiten die möglicherweise durch die Dateiorganisation sein können. Wenn das Makefile vom make-Programm wird wird eine Umwandlung etwa einer Quelldatei eine Objektdatei nur dann vorgenommen wenn die neuer als die Objektdatei ist. Bei der Entwicklung großer Programmpakete mit vielen Quelldateien und ausführbaren Programmen entfällt so die Notwendigkeit bei Reihe kleiner Veränderungen alle Compilationen erneut durchzuführen. Erfolg dieser 'Sparmaßnahme' hängt natürlich von der Angabe der Dateiabhängigkeiten ab. Alle Abhängigkeiten müssen vollständig und korrekt im Makefile sein - was bei großen Projekten nicht zu realisieren ist. Insbesondere bei Programmänderungen oder können neue Abhängigkeiten entstehen. Diese müssen sofort Makefile eingetragen werden.

Die von make ausgeführten Befehle sind auf Compiler oder Linker beschränkt. Jedes Werkzeug das der Kommandozeileninterpreter zur Verfügung stellt kann benutzt werden die gewünschten Dateimanipulationen zu erreichen. So kann z. B. automatisch Bilder aus Texten erzeugen.

'make' hat sich im großen Bereichen Software-Entwicklung durchgesetzt hat aber -- gerade bei Projekten -- einige Probleme (siehe Literatur ). Daher wurde immer wieder Versuche gemacht "Nachfolger" zu finden und zu etablieren (siehe Alternativen ).

Beispiel für ein Makefile

Ein Programm "prog" soll aus zwei "filea.c" und "fileb.c" so erzeugt werden dass möglichst wenig Übersetzungs- und Bindevorgänge benötigt werden nur eine der beiden Quellen geändert wird.

 prog: filea.obj fileb.obj LD -o prog fileb.obj  

 filea.obj: filea.c CC -c filea.c  

 fileb.obj: fileb.c CC -c fileb.c  

Die erste Zeile bedeutet dass das prog aus den Teilen filea.obj und fileb.obj hergestellt wird. Die darauffolgende Zeile gibt wie mit welchem Werkzeug - hier ein Linker - dies erfolgen soll. Zeilen die wie in diesem Fall - Programme aufrufen müssen mit einem Tab beginnen. Die dritte Zeile gibt an filea.obj aus filea.c hergestellt wird und zwar in der Zeile durch Aufruf von cc dem C-Kompiler. Die fünfte und sechste sind analog.

Der Erstellungsvorgang wird dann auf der Kommandozeile mittels make prog gestartet.

Das vorliegende Beispiel zeigt lediglich die Form eines Makefiles es gibt Methoden wie z. B. Patternregeln die das einfacher machen.

Umfeld

Starke Verwendung erfährt Make in der Welt des Open Source deren Projekte im Quellcode vorliegen. Besonders größeren Programmen die aus vielen einzelnen Quelltext-Dateien und Abhängigkeiten zu seperaten Bibliotheken besitzen wird Makefile von den Entwicklern nicht direkt geschieben mittels unterschiedlicher Programme aus einfacheren Regeln erstellt. werden üblicherweise die GNU autotools wie autoconf automake verwendet.

Die Vorgehensweise um aus den verfügbaren 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 immer ein Blick in alle 'INSTALL' oder genannten Dateien )
  • danach 'make' und meistens noch ein install' ausführen um das Programm zu installieren in die entsprechenden Verzeichnisse zu kopieren

Alternativen zum Make-Befehl

(erhebt keinen Anspruch auf Vollständigkeit)

  • Derivate von Make sind z.B. GNU Make (Microsoft) JMake Opus Make MKS.
  • SCons : Python -implementiertes plattform-übergreifendes System mit vielen Verbesserungen gegenüber Integriert auch einige Features von automake/autoconf. Seine kommt daher dass in den "SConstruct" genannten die gesamte Funktionalität der Programmiersprache Python genutzt werden kann. Siehe dazu http://scons.sourceforge.net/ .
  • Apache Ant . XML -basiertes System mit demselben Zweck das mit von Java erweitert werden kann.
  • Integrierte Entwicklungsumgebung (IDE) . Dort wird das Ganze in eine Benutzerschnittstelle ( GUI ) verpackt und ist subjektiv leichter zu Beispiel unter GNU/Linux ist KDE KDevelop das es erlaubt C C++ für Konsole und QT und KDE Programme für zu erstellen. Ein Beispiel unter Windows ist Borland C++ Builder.
  • CruiseControl
  • PyBuild
  • Anthill

Literatur


Externe Verweise

  • Artikel " Recursive Make Considered Harmful " von Peter Miller - Beschreibt die durch rekursive 'makefiles' (was ein typisches Vorgehen



Bücher zum Thema Make

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Make.html">Make </a>