<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Make</id>
	<title>Make - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Make"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Make&amp;action=history"/>
	<updated>2026-05-15T15:17:57Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Make&amp;diff=11815&amp;oldid=prev</id>
		<title>imported&gt;Aka: /* Einzelnachweise */ bereits in Unterkategorie „Build-Management“ enthalten</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Make&amp;diff=11815&amp;oldid=prev"/>
		<updated>2023-03-26T13:59:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Einzelnachweise: &lt;/span&gt; bereits in Unterkategorie „Build-Management“ enthalten&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{SEITENTITEL:make}}&lt;br /&gt;
{{Dieser Artikel|behandelt das Build-Management-Tool. Für die Zeitschrift siehe [[Make:]].}}&lt;br /&gt;
{{Infobox Software&lt;br /&gt;
| Maintainer           = diverse&lt;br /&gt;
| Hersteller           = [[Stuart Feldman]], diverse&lt;br /&gt;
| Erscheinungsjahr     = 1976&amp;lt;ref&amp;gt;[https://www.princeton.edu/~hos/mike/transcripts/feldman.htm &amp;#039;&amp;#039;Interview with Stu Feldman, 9-20-89&amp;#039;&amp;#039;] abgerufen am 22. November 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Management           = &lt;br /&gt;
| AktuelleVersion      = &lt;br /&gt;
| AktuelleVersionFreigabeDatum = &lt;br /&gt;
| AktuelleVorabVersion = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Betriebssystem       = [[Portable Operating System Interface|POSIX]] ([[Linux]], [[Unix]], …), portiert auf diverse andere Plattformen&lt;br /&gt;
| Programmiersprache   = [[C (Programmiersprache)|C]]&lt;br /&gt;
| Kategorie            = [[Erstellungsprozess|Build-Management]]-Tool&lt;br /&gt;
| Lizenz               = diverse&lt;br /&gt;
| Deutsch              = &lt;br /&gt;
| Website              =  &amp;lt;!-- viele Anbieter, daher keine einheitliche Webseite --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;make&amp;#039;&amp;#039;&amp;#039; ({{enS}} für &amp;#039;&amp;#039;machen&amp;#039;&amp;#039;, &amp;#039;&amp;#039;erstellen&amp;#039;&amp;#039;) ist ein [[Erstellungsprozess|Build-Management]]-Tool, das Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich bei der [[Softwareentwicklung]] als [[Programmierwerkzeug]] eingesetzt.&amp;lt;ref name=&amp;quot;gnu make&amp;quot;&amp;gt;{{Internetquelle |url=https://www.gnu.org/software/make/ |titel=GNU Make |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genutzt wird es beispielsweise, um in Projekten, die aus vielen verschiedenen [[Datei]]en mit [[Quellcode]] bestehen, automatisiert alle Arbeitsschritte ([[Compiler|Übersetzung]], [[Linker (Computerprogramm)|Linken]], Dateien kopieren etc.) zu steuern, bis hin zum fertigen, ausführbaren Programm. &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; ist jedoch so flexibel ausgelegt, dass es auch beliebige andere Aufgaben steuern kann, bei denen die zeitliche Abhängigkeit von Dateien eine Rolle spielt.&amp;lt;ref name=&amp;quot;gnu make&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Hilfsprogramm &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; ist Teil des [[Portable Operating System Interface|POSIX]]-Standards, dessen gegenwärtige Bezeichnung &amp;#039;&amp;#039;[[IEEE]] Std 1003.1, 2008 Edition&amp;#039;&amp;#039; lautet (äquivalent dazu [[Single UNIX Specification]] V3, SUSv3).&lt;br /&gt;
&lt;br /&gt;
== Erklärung ==&lt;br /&gt;
&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; liest ein sogenanntes &amp;#039;&amp;#039;Makefile&amp;#039;&amp;#039; (man beachte die Großschreibung, welche bei Unix-Dateisystemen unterschieden wird), in dem die Abhängigkeiten des Übersetzungsprozesses von Programmen formalisiert erfasst sind. Diese [[Formalisierung]] beschreibt, welche [[Quelltext]]dateien auf welche Weise durch den Compiler oder durch andere Programme zu welchen [[Objektcode|Objektdateien]] bzw. Ergebnissen verarbeitet werden, bzw. welche Objektdateien vom Linker zu [[Programmbibliothek]]en oder ausführbaren [[Computerprogramm|Programmen]] verbunden werden. Alle Schritte erfolgen unter Beachtung der im &amp;#039;&amp;#039;Makefile&amp;#039;&amp;#039; erfassten Abhängigkeiten.&amp;lt;ref name=&amp;quot;gnu make&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Makefile vom &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;-Programm abgearbeitet wird, wird eine [[Konvertierung (Informatik)|Umwandlung]] etwa einer Quelldatei in eine Objektdatei nur dann vorgenommen, wenn die Quelldatei neuer als die bereits vorliegende Version der Ergebnisdatei ist, bzw. wenn keine Ergebnisdatei vorhanden ist. Bei der [[Software-Entwicklung|Entwicklung]] großer Programmpakete mit vielen Quelldateien und vielen ausführbaren Programmen entfällt so die Notwendigkeit, bei einer Reihe kleiner Veränderungen alle [[Kompilierung]]en erneut durchzuführen.&amp;lt;ref name=&amp;quot;gnu make&amp;quot; /&amp;gt; Der Erfolg dieser Sparmaßnahme hängt 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. Zur korrekten Funktion müssen diese Abhängigkeiten in das Makefile eingetragen werden. In den frühen 1980er Jahren wurden dazu häufig Hilfsprogramme wie &amp;lt;code&amp;gt;[[mkmf]]&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;[[makedepend]]&amp;lt;/code&amp;gt; verwendet. Seit Mitte der 1980er Jahre gibt es in die Make-Programme integrierte Methoden zur automatischen Erzeugung der Abhängigkeitslisten (z.&amp;amp;nbsp;B. in SunPro make) bzw. in die Makefiles integrierte Regeln zu deren Erzeugung.&lt;br /&gt;
&lt;br /&gt;
Die von &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; 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.&amp;amp;nbsp;B. automatisch Bilder aus Texten erzeugen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; hat sich in großen Bereichen der Software-Entwicklung durchgesetzt, hatte aber bis ca. Mitte der 1980er Jahre – gerade bei großen Projekten – (solange die automatisierte Erzeugung sämtlicher Abhängigkeitsregeln nicht gelöst war) Probleme &amp;#039;&amp;#039;(siehe [[#Literatur|Literatur]])&amp;#039;&amp;#039;. Daher wurden immer wieder Versuche gemacht, einen Nachfolger zu finden und zu etablieren &amp;#039;&amp;#039;(siehe [[#Alternativen zum make-Befehl|Alternativen]])&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Prinzip ==&lt;br /&gt;
Das Erstellen einer Datei wird im Makefile als ein Ziel (Target) bezeichnet. Die Randbedingungen dazu werden in einem Eintrag beschrieben.&amp;lt;ref name=&amp;quot;gnu make regel&amp;quot;&amp;gt;{{Internetquelle |url=https://www.gnu.org/software/make/manual/make.html#Rule-Introduction |titel=GNU Make: What a Rule Looks Like |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
 A: B C&lt;br /&gt;
   cmd_A&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Zeile bedeutet: Ziel &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; hängt von den Quellen &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; ab („Hängt ab von“ bedeutet meistens „wird erstellt aus“).&amp;lt;ref name=&amp;quot;gnu make dependensies&amp;quot;&amp;gt;{{Internetquelle |url=https://www.gnu.org/software/make/manual/make.html#Simple-Makefile |titel=GNU Make: A Simple Makefile |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt; Wenn &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; erstellt werden soll, werden &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; betrachtet. Ist eins von beiden jünger als &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, wird &amp;lt;code&amp;gt;cmd_A&amp;lt;/code&amp;gt; ausgeführt, um &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; neu zu erstellen. Ist &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; jünger als &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, wird &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; als aktuell betrachtet und &amp;lt;code&amp;gt;cmd_A&amp;lt;/code&amp;gt; daher nicht ausgeführt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; als Quellen von &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; können nun wiederum Ziele aus weiteren Make-Vorschriften sein:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
 B: D E&lt;br /&gt;
  cmd_B&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zuerst wird &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; betrachtet. Da &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; von &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; abhängt, wird also &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; betrachtet, bevor für &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; weiteres ausgeführt wird. Insgesamt wird damit die Ausführung von Anweisungen rückwärts beschrieben. Ausgangspunkt ist das letztliche Ziel &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;gnu make dependensies&amp;quot; /&amp;gt; Diese Betrachtung muss bei Quellen enden, die vorhanden sind und für die es keine weitere Bildungsvorschrift gibt. Das sind die eigentlichen Quellen der gesamten Generierung. Ist eine Quelle nicht vorhanden, es wird aber auch keine Bildungsvorschrift gefunden, kann der maker nur mit einer Fehlermeldung reagieren: &amp;lt;code&amp;gt;don&amp;#039;t know how to make …&amp;lt;/code&amp;gt;. Ursache für einen solchen Fehler kann entweder ein Fehler im Makefile oder das tatsächliche Fehlen der Quelle sein.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition von Ableitungsregeln&amp;#039;&amp;#039;&amp;#039;: In der obigen Darstellung können &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; usw. benannte Files mit Verzeichnisangabe sein. Es ist aber auch möglich, unter Angabe der File-Extension allgemeine Regeln zu definieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
 .c.o:&lt;br /&gt;
    $(CC) $(CFLAGS) -c -o $@ $&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel befindet sich eine sogenannte &amp;#039;&amp;#039;Schlussfolgerungsregel&amp;#039;&amp;#039; die in Form einer &amp;#039;&amp;#039;Suffixregel&amp;#039;&amp;#039; verfasst ist.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.gnu.org/software/make/manual/make.html#Suffix-Rules |titel=GNU Make: Old-Fashioned Suffix Rules |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel für ein Makefile ==&lt;br /&gt;
Das vorliegende Beispiel zeigt lediglich die einfachste Form eines Makefiles. Es gibt darüber hinaus Methoden wie z.&amp;amp;nbsp;B. [[Entwurfsmuster|Pattern]]-Regeln, die das Makefile mächtiger machen.&amp;lt;ref name=&amp;quot;gnu make dependensies&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Programm &amp;lt;code&amp;gt;prog&amp;lt;/code&amp;gt; soll aus den beiden Quelldateien &amp;lt;code&amp;gt;foo.c&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;bar.c&amp;lt;/code&amp;gt; so erzeugt werden, dass immer möglichst wenig Übersetzungs- und Bindevorgänge benötigt werden, wenn nur eine der beiden [[Quellcode|Quelldateien]] geändert wird.&lt;br /&gt;
&amp;lt;syntaxhighlight line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS&amp;quot; lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
CC = cc&lt;br /&gt;
LD = ld&lt;br /&gt;
&lt;br /&gt;
prog: foo.o bar.o&lt;br /&gt;
	$(LD) -o prog foo.o bar.o&lt;br /&gt;
&lt;br /&gt;
foo.o: foo.c&lt;br /&gt;
	$(CC) -c foo.c&lt;br /&gt;
&lt;br /&gt;
bar.o: bar.c&lt;br /&gt;
	$(CC) -c bar.c&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
In den ersten beiden Zeilen werden globale Variablen definiert, welche die Programmnamen für den Compiler und den Linker enthalten. Zeile 4 definiert eine &amp;#039;&amp;#039;Sprungmarke&amp;#039;&amp;#039; im Makefile, die &amp;#039;&amp;#039;targets&amp;#039;&amp;#039; genannt werden; die Ausdrücke &amp;lt;code&amp;gt;foo.o&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;bar.o&amp;lt;/code&amp;gt; rufen die in den Zeilen 7 und 10 definierten &amp;#039;&amp;#039;targets&amp;#039;&amp;#039; zuerst in der angegebenen Reihenfolge auf, bevor letztendlich das Kommando in Zeile 5 ausgeführt wird. In Zeile 5 wird ein Kommando aus der globalen Variable &amp;lt;code&amp;gt;LD&amp;lt;/code&amp;gt; und einigen Parametern zusammengesetzt. Die beiden Dateien &amp;lt;code&amp;gt;foo.o&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;bar.o&amp;lt;/code&amp;gt; stehen zur Verfügung, weil zuvor bereits die beiden anderen &amp;#039;&amp;#039;targets&amp;#039;&amp;#039; ausgeführt wurden, welche diese Dateien erzeugt haben. Die nächste Zeile gibt an, dass &amp;lt;code&amp;gt;foo.o&amp;lt;/code&amp;gt; aus &amp;lt;code&amp;gt;foo.c&amp;lt;/code&amp;gt; hergestellt wird, und zwar in der achten Zeile durch Aufruf von &amp;lt;code&amp;gt;cc&amp;lt;/code&amp;gt;, dem C-Compiler. Die beiden letzten Zeilen sind analog.&lt;br /&gt;
&lt;br /&gt;
Zwischen den Namen der Sprungmarken und den unter ihnen verarbeiteten Dateien besteht kein zwingender Zusammenhang. Anweisungen, die unter einer Sprungmarke ausgeführt werden, beginnen stets mit einem Horizontal-[[Tabulatorzeichen]].&lt;br /&gt;
&lt;br /&gt;
Der Vorgang wird auf der [[Kommandozeile]] mittels &amp;lt;code&amp;gt;make prog&amp;lt;/code&amp;gt; gestartet. Wird kein Parameter angegeben, führt &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; das zuerst definierte Ziel (hier &amp;lt;code&amp;gt;prog&amp;lt;/code&amp;gt;) aus. In dem obigen Beispiel hätte also &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; die gleiche Wirkung wie &amp;lt;code&amp;gt;make prog&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
Die Entwicklung großer Programme und Programmpakete, die aus vielen einzelnen Quelltextdateien bestehen und Abhängigkeiten zu separaten Bibliotheken besitzen, ist ohne &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; oder ähnliche Hilfsmittel kaum mehr denkbar. In der Welt des [[Open Source]] ist es üblich, dass mit dem Quellcode eines Projekts auch das Makefile veröffentlicht wird, um das [[Compiler|Kompilieren]] einer Software zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
== Neuere Entwicklungen ==&lt;br /&gt;
Besonders bei größeren Programmen wird das Makefile von den Entwicklern nicht immer direkt geschrieben, sondern entweder mittels unterschiedlicher Programme aus einfacheren Regeln erstellt oder es werden mächtigere Systeme verwendet. Eine Methode zur automatischen Erzeugung von komplexen Makefiles ist die Verwendung von Präprozessoren wie den &amp;#039;&amp;#039;[[GNU autotools]]&amp;#039;&amp;#039; ([[autoconf]] und [[automake]]) oder auch [[mkmf]], [[qmake]] oder [[CMake]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html |titel=An Introduction to the Autotools |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=http://doc.qt.io/qt-5/qmake-manual.html |titel=qmake Manual |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://cmake.org/overview/ |titel=About CMake |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt; Methoden zur Reduzierung der Komplexität der Makefiles beruhen auf mächtigeren Systemen wie dem Programm [[nmake (Software)|nmake]] von [[David Korn]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://w3.cs.jmu.edu/bernstdh/Web/common/help/msc_nmake.php |titel=MS C/C++: The nmake Command |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt; Dieses System ermöglicht Makefiles, die lediglich tabellarisch die beteiligten Quelldateien auflisten.&lt;br /&gt;
&lt;br /&gt;
== Alternativen zum make-Befehl ==&lt;br /&gt;
[[GNU Make]] (kurz gmake) wird üblicherweise in Linux eingesetzt, für [[Microsoft Windows|Windows]] gibt es nmake. Als Nachfolger von UNIX-make wurde nmake von [[AT&amp;amp;T]] geschrieben, es ermöglicht einfache tabellarische Makefiles.&lt;br /&gt;
&lt;br /&gt;
; makepp&lt;br /&gt;
: ist zwar ebenfalls ein Derivat von GNU make, bietet aber darüber hinaus einen integrierten erweiterbaren Befehls- und Include-Parser um implizite Abhängigkeiten automatisch zu erkennen. Auch geänderte Befehlsoptionen u.&amp;amp;nbsp;ä. Rahmenbedingungen werden erkannt. Das große &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;-Problem mit Rekursion kann elegant umgangen werden, um korrekte Aufbauten zu garantieren. Darüber hinaus ist [[Perl (Programmiersprache)|Perl]] auf allen Ebenen integrierbar.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://makepp.sourceforge.net/ |titel=Makepp Home Page |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; mk&lt;br /&gt;
: (unter [[Plan 9 (Betriebssystem)|Plan 9]]) ist ebenfalls aus &amp;#039;&amp;#039;make&amp;#039;&amp;#039; entwickelt, jedoch in die Richtung der Vereinfachung.&lt;br /&gt;
; [[SCons]]&lt;br /&gt;
: [[Python (Programmiersprache)|Python]]-implementiertes, plattformübergreifendes System mit vielen Verbesserungen gegenüber &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;. Integriert auch einige Features von &amp;lt;code&amp;gt;automake&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;. Seine Stärke kommt daher, dass in den „SConstruct“ genannten Makefiles die gesamte Funktionalität der Programmiersprache Python genutzt werden kann.&lt;br /&gt;
; [[Apache Ant]]&amp;#039;&amp;#039; und &amp;#039;&amp;#039;[[Apache Maven]]&lt;br /&gt;
: [[Extensible Markup Language|XML]]-basierende Systeme mit demselben Zweck, die mit Hilfe von [[Java (Programmiersprache)|Java]] erweitert werden können.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://ant.apache.org/ |titel=Apache Ant About |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=http://maven.apache.org/ |titel=Welcome to Apache Maven |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; [[Vestasys|Vesta]]&lt;br /&gt;
: ist ein [[Software-Configuration-Management|SCM]]-Werkzeug mit integriertem Build Tool.&lt;br /&gt;
; Jam&lt;br /&gt;
: ein Buildwerkzeug aus der [[Boost (C++-Bibliothek)|Boost]]-Bibliothek, der Erweiterung der C++-Standardbibliothek der Programmiersprache C++.&lt;br /&gt;
; [[Rake (Software)|Rake]]&lt;br /&gt;
: Ein in [[Ruby (Programmiersprache)|Ruby]] implementiertes Werkzeug mit in Ruby geschriebenen &amp;#039;&amp;#039;Rakefiles&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://ruby.github.io/rake/ |titel=RAKE – Ruby Make |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; [[A-A-P]]&lt;br /&gt;
: ein in Python geschriebenes Programm zur Automatisierung der Erstellung von Computerprogrammen, vergleichbar mit make oder Ant. Neben der klassischen Automatisierung des Erstellungsvorgangs ermöglicht es auch das Auffinden, Herunterladen, Installieren und Verändern von sowie die Fehlersuche in Computerprogrammen. A-A-P besitzt eine integrierte Anbindung an [[Concurrent Versions System|CVS]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://pypi.org/project/Aap/ |titel=PyPI:Aap |sprache=en |abruf=2018-10-03}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Helmut Herold: &amp;#039;&amp;#039;make&amp;#039;&amp;#039;. Addison-Wesley, ISBN 3-8273-2095-X&lt;br /&gt;
* Thomas Peschel-Findeisen: &amp;#039;&amp;#039;Make ge-packt&amp;#039;&amp;#039;. Mitp-Verlag, ISBN 3-8266-1442-9&lt;br /&gt;
* Robert Mecklenburg: &amp;#039;&amp;#039;GNU make&amp;#039;&amp;#039;. O’Reilly, ISBN 3-89721-408-3&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wiktionary|make}}&lt;br /&gt;
* {{man|1|make|posix|maintain, update, and regenerate groups of programs}}&lt;br /&gt;
* {{man|1|make|OpenBSD|maintain program dependencies}}&lt;br /&gt;
* {{man|1|make|FreeBSD|maintain program dependencies}}&lt;br /&gt;
* {{man|1|make|gnu|GNU make utility to maintain groups of programs}}&lt;br /&gt;
* Peter Miller: [http://aegis.sourceforge.net/auug97.pdf &amp;#039;&amp;#039;Recursive Make Considered Harmful&amp;#039;&amp;#039;] (PDF) – beschreibt die Probleme, die durch rekursive Makefiles entstehen können (was ein typisches Vorgehen ist)&lt;br /&gt;
* [http://make.paulandlesley.org/autodep.html &amp;#039;&amp;#039;Advanced Auto-Dependency Generation mit make&amp;#039;&amp;#039;]&lt;br /&gt;
* [http://seed7.sourceforge.net/scrshots/make7.htm &amp;#039;&amp;#039;Make7&amp;#039;&amp;#039;] – Ein portables [[Open Source]] make Programm, geschrieben in [[Seed7]] (englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references responsive /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4334388-0|LCCN=n/92/090404|VIAF=176684165}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Unix-Software]]&lt;br /&gt;
[[Kategorie:POSIX]]&lt;br /&gt;
[[Kategorie:Build-Management]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>