Provided by: manpages-de_4.26.0-1_all bug

BEZEICHNUNG

       make - GNU-Make-Dienstprogramm zur Verwaltung von Programmgruppen

ÜBERSICHT

       make [OPTION] … [ZIEL] …

BESCHREIBUNG

       Das  Dienstprogramm  make bestimmt automatisch, welche Teile eines großen Programms neu kompiliert werden
       müssen und gibt die Befehle zur Neukompilierung aus. Das Handbuch beschreibt die GNU-Implementierung  von
       make,  die  von  Richard  Stallman  und  Roland  McGrath geschrieben wurde und gegenwärtig von Paul Smith
       betreut wird. Unsere Beispiele zeigen C-Programme, da diese sehr verbreitet sind, aber  Sie  können  make
       mit  jeder  Programmiersprache  verwenden,  deren Compiler mit einem Shell-Befehl aufgerufen werden kann.
       Tatsächlich ist make nicht auf Programme beschränkt. Sie können damit jede Aufgabe  beschreiben,  in  der
       einige  Dateien  automatisch  aus  anderen  aktualisiert  werden  müssen, wann immer sich wiederum andere
       ändern.

       Um die Verwendung von make vorzubereiten, müssen Sie eine Datei namens makefile  (eine  Make-Steuerdatei)
       schreiben,  welche  die Beziehungen zwischen den Dateien in Ihrem Programm beschreibt und die Befehle zur
       Aktualisierung jeder der Dateien angibt. In einem Programm wird die ausführbare Datei typischerweise  aus
       Objektdateien aktualisiert, die im Gegenzug durch Kompilieren von Quelldateien erzeugt werden.

       Sobald  eine  geeignetes  Makefile  existiert, können Sie nach jeder Änderung an den Quelldateien mit dem
       einfachen Shell-Befehl

              make

       alle erforderlichen Neukompilierungen durchführen. Das Programm make entscheidet anhand der  Beschreibung
       im Makefile und der Zeitstempel der letzten Änderungen an den Dateien, welche Dateien aktualisiert werden
       müssen. Für jede dieser Dateien führt es die im Makefile angegebenen Befehle aus.

       make führt die im makefile angegebenen Befehle aus, um ein oder mehrere Ziele zu aktualisieren, wobei ein
       Ziel  typischerweise  ein  Programm  ist.  Falls  die Option -f nicht angegeben ist, schaut make nach den
       Dateien GNUmakefile, makefile und Makefile, in dieser Reihenfolge.

       Normalerweise sollten Sie Ihr Makefile entweder makefile oder Makefile nennen. Wir empfehlen Makefile, da
       es so an exponierter Stelle nahe des Anfangs einer Verzeichnisauflistung erscheint, auch nahe zu  anderen
       wichtigen  Dateien  wie  README.  Der Name GNUmakefile, nach dem zuerst gesucht wird, ist für die meisten
       Makefiles nicht zu empfehlen. Sie sollten diesen Namen nur verwenden, wenn Ihr Makefile speziell für  GNU
       make  geschrieben  ist  und  von anderen Versionen von make nicht verstanden wird. Falls »-« als makefile
       angegeben ist, wird aus der Standardeingabe gelesen.

       make aktualisiert ein Ziel, falls dieses von anderen Dateien abhängt, die seit der letzten Aktualisierung
       des Ziels verändert wurden, oder falls das Ziel nicht existiert.

OPTIONEN

       -b, -m
            Diese Optionen werden ignoriert und sind nur zwecks Kompatibilität zu  anderen  Versionen  von  make
            vorhanden.

       -B, --always-make
            erstellt bedingungslos alle Ziele.

       -C Verzeichnis, --directory=Verzeichnis
            wechselt  in das angegebene Verzeichnis, bevor die Makefiles gelesen werden oder irgendetwas anderes
            getan wird. Falls Sie die Option -C  mehrmals  angeben,  wird  jede  davon  relativ  zur  vorherigen
            interpretiert:  -C  /  -C  etc ist gleichbedeutend mit -C /etc. Dies ist bei rekursiven Aufrufen von
            make typisch.

       -d   gibt   zusätzlich   Debugging-Meldungen   zu   den   normalen   Verarbeitungsmeldungen   aus.    Die
            Debugging-Informationen  sagen,  welche  Dateien zum Neuerstellen infrage kommen, welche Zeitstempel
            verglichen werden und mit welchen  Ergebnissen,  welche  Dateien  tatsächlich  neu  erstellt  werden
            müssen,  welche  impliziten Regeln dabei berücksichtigt und welche angewendet werden – einfach alles
            von Interesse, wie und warum make entscheidet, was zu tun ist.

       --debug[=SCHALTER]
            gibt zusätzlich Debugging-Meldungen zu den normalen Verarbeitungsmeldungen aus. Falls die  SCHALTETR
            weggelassen  werden, dann ist das Verhalten so, als wäre -d angegeben worden. SCHALTER kann entweder
            a für alle Debug-Ausgaben (gleichbedeutend  mit  -d),  b  für  grundlegende  Debug-Ausgaben,  v  für
            ausführlichere  grundlegende  Debug-Ausgaben, i für die Anzeige der impliziten Regeln, j für Details
            zu den Befehlsaufrufen und m für Debugging während der  Neuerstellung  der  Makefiles  sein.  Mit  n
            können Sie alle vorherigen Debugging-Schalter deaktivieren.

       -e, --environment-overrides
            bevorzugt Umgebungsvariablen gegenüber den Variablen in Makefiles.

       -f Datei, --file=Datei, --makefile=DATEI
            verwendet die angegebene Datei als Makefile.

       -i, --ignore-errors
            ignoriert alle von den Befehlen zur Neuerstellung von Dateien ausgegebenen Fehlermeldungen.

       -I Verzeichnis, --include-dir=Verzeichnis
            gibt  ein  Verzeichnis  an,  in  dem nach darin enthaltenen Makefiles gesucht werden soll. Falls die
            Option -I mehrmals mit verschiedenen Verzeichnissen angegeben ist, werden die Verzeichnisse in genau
            der angegebenen Reihenfolge durchsucht. Im Gegensatz zu den Argumenten  anderer  Schalter  für  make
            dürfen  Sie Verzeichnisse direkt nach dem Schalter angeben: -IVerzeichnis ist ebenso zulässig wie -I
            Verzeichnis. Diese Syntax dient der Kompatibilität zum Schalter -I des C-Präprozessors.

       -j [Aufträge], --jobs[=Aufträge]
            gibt die Anzahl der Aufträge (Befehle) an, die  gleichzeitig  ausgeführt  werden  sollen.  Wird  die
            Option  -j  mehrmals angegeben, ist die zuletzt angegebene wirksam. Wird die Option -j ohne Argument
            angegeben, begrenzt make die Anzahl der gleichzeitig ausführbaren  Aufträge  nicht.  Wenn  make  ein
            untergeordnetes  make  aufruft,  werden  alle  Instanzen  von make untereinander koordiniert, um die
            angegebene Anzahl der Aufträge gleichzeitig  auszuführen.  Im  Abschnitt  PARALLELES  MAKE  UND  DER
            AUFTRAGSSERVER finden Sie weitere Details.

       --jobserver-fds [R,W]
            wird  von  make  intern  verwendet,  um  die  gelesenen  und geschriebenen Dateideskriptornummern an
            untergeordnete makes zu übergeben. Im Abschnitt PARALLELES MAKE UND DER  AUFTRAGSSERVER  finden  Sie
            Details hierzu.

       -k, --keep-going
            setzt  nach  einer Fehlermeldung so weit wie möglich fort. Während zwar das fehlgeschlagene Ziel und
            die davon abhängigen Ziele nicht  neu  erstellt  werden  können,  ist  es  dennoch  möglich,  andere
            Abhängigkeiten dieser Ziele zu verarbeiten.

       -l [Last], --load-average[=Last]
            gibt  an,  dass keine neuen Aufträge (Befehle) gestartet werden sollen, wenn bereits andere Aufträge
            ausgeführt werden  und  die  gemittelte  Last  mindestens  der  angegebenen  Last  entspricht  (eine
            Fließkommazahl). Ohne Argument wird die vorherige Lastbegrenzung aufgehoben.

       -L, --check-symlink-times
            verwendet die letzte »mtime« (Veränderungszeit) zwischen Symlinks und Zielen.

       -n, --just-print, --dry-run, --recon
            gibt  die  Befehle aus, die ausgeführt werden würden, aber führt sie nicht wirklich aus (außer unter
            bestimmten Umständen).

       -o Datei, --old-file=Datei, --assume-old=Datei
            erstellt die angegebene Datei nicht neu, selbst wenn sie älter  als  ihre  Abhängigkeiten  ist,  und
            erneuert nichts aufgrund von Änderungen in der angegebenen Datei. Im Wesentlichen wird die Datei als
            uralt betrachtet und deren Regeln werden ignoriert.

       -O[Typ], --output-sync[=Typ]
            stellt  beim  parallelen  Ausführen mehrerer Aufträge mit -j sicher, dass die Ausgabe jedes Auftrags
            zusammengeführt wird, statt sich mit den Ausgaben anderer Aufträge zu überschneiden. Falls kein  Typ
            angegeben   wird   oder   target  ist,  wird  die  Ausgabe  des  gesamten  Rezepts  für  jedes  Ziel
            zusammengefasst. Falls line als Typ angegeben ist, wird die  Ausgabe  jeder  Befehlszeile  innerhalb
            eines  Rezepts zusammengefasst. Falls recurse als Typ angegeben ist, wird die Ausgabe eines gesamten
            Make-Aufrufs rekursiv zusammengefasst. Falls none als Typ angegeben ist,  ist  die  Synchronisierung
            der Ausgabe deaktiviert.

       -p, --print-data-base
            gibt  die  Datenbasis  (Regeln  und  Variablenwerte)  aus, die sich aus der Auswertung der Makefiles
            ergibt.  Dann  wird  wie  üblich  oder  anderweitig  angegeben  fortgesetzt.   Damit   werden   auch
            Versionsinformationen  angezeigt,  die mit dem Schalter -v ausgegeben werden (siehe nachfolgend). Um
            die Datenbasis auszugeben, ohne zu versuchen, irgendwelche Dateien neu zu erstellen,  verwenden  Sie
            make -p -f/dev/null.

       -q, --question
            aktiviert  den  »Fragemodus«.  Es  werden  keine  Befehle  ausgeführt oder etwas ausgegeben. Es wird
            lediglich ein Exit-Status ausgegeben, der 0 ist, sofern die angegebenen Ziele bereits aktuell  sind,
            oder anderenfalls 1.

       -r, --no-builtin-rules
            deaktiviert  die Berücksichtigung der eingebauten impliziten Regeln. Außerdem wird die Standardliste
            der Suffixe für die Suffix-Regeln geleert.

       -R, --no-builtin-variables
            definiert keine der eingebauten Variablen.

       -s, --silent, --quiet
            aktiviert den stillen Modus, in dem die ausgeführten Befehle nicht ausgegeben werden.

       -S, --no-keep-going, --stop
            setzt die Wirkung der Option -k außer Kraft. Dies ist nur bei einem  rekursiven  make  erforderlich,
            wobei  -k  von  einem  make  höherer  Ebene durch MAKEFLAGS geerbt werden kann, oder falls Sie -k in
            MAKEFLAGS in Ihrer Umgebung gesetzt haben.

       -t, --touch
            greift auf Dateien zu (markiert sie als aktuell, ohne sie wirklich  zu  verändern),  anstelle  deren
            Befehle  auszuführen.  Dadurch  wird  vorgegaukelt,  dass  die Befehle bereits ausgeführt wurden, um
            zukünftige Aufrufe von make zu täuschen.

       --trace
            gibt Informationen zur Verwendung jedes Ziels aus, also warum das Ziel zur Neuerstellung  vorgesehen
            ist und welche Befehle zur Neuerstellung ausgeführt werden.

       -v, --version
            gibt die Version von make sowie einen Urheberrechtshinweis, eine Liste der Autoren und einen Hinweis
            zum Haftungsausschluss aus.

       -w, --print-directory
            gibt  eine Meldung aus, welche das Arbeitsverzeichnis vor und nach der weiteren Verarbeitung angibt.
            Dies ist hilfreich, um  Fehler  einzugrenzen,  die  in  komplizierten  Verschachtelungen  rekursiver
            make-Aufrufe entstehen.

       --no-print-directory
            deaktiviert -w selbst dann, wenn es implizit aktiviert wurde.

       -W Datei, --what-if=Datei, --new-file=Datei, --assume-new=Datei
            täuscht  vor,  dass  die  angegebene  Ziel-Datei  gerade  geändert wurde. Wenn dies zusammen mit dem
            Schalter -n verwendet wird, zeigt es Ihnen, was  geschehen  würde,  wenn  Sie  die  Datei  verändern
            würden.  Ohne  -n ist es fast das Gleiche wie die Ausführung eines touch-Befehls mit der angegebenen
            Datei vor der Ausführung von make, aber mit dem Unterschied, dass der Änderungszeitpunkt nur in  der
            Fantasie von make geändert wurde.

       --warn-undefined-variables
            warnt, wenn eine nicht definierte Variable referenziert wird.

EXIT-STATUS

       GNU make beendet sich mit dem Status 0, wenn alle Makefiles erfolgreich ausgewertet wurden und für keines
       der  Ziele  die  Erstellung  fehlgeschlagen  ist. Der Status 1 wird zurückgeliefert, wenn der Schalter -q
       angegeben wurde und make ermittelt hat, dass ein Ziel  neu  erstellt  werden  muss.  Der  Status  2  wird
       zurückgeliefert, falls irgendwelche Fehler aufgetreten sind.

SIEHE AUCH

       Die  vollständige  Dokumentation  für  make  wird  als  ein Texinfo-Handbuch gepflegt. Wenn die Programme
       info(1) und make auf Ihrem Rechner ordnungsgemäß installiert sind, können Sie mit dem Befehl

              info make

       auf   das   vollständige   Handbuch   zugreifen.    Zusätzlich    ist    das    Handbuch    online    auf
       https://www.gnu.org/software/make/manual/html_node/index.html verfügbar.

PARALLELES MAKE UND DER AUFTRAGSSERVER

       Mit der Option -j können Sie make anweisen, Prozesse parallel auszuführen. Mit einem numerischen Argument
       für -j können Sie eine Obergrenze für die Anzahl parallel auszuführender Prozesse angeben.

       Wenn  in  einer Bauumgebung ein make der obersten Ebene sub-makes aufruft (zum Beispiel in einem Stil, in
       dem jedes Unterverzeichnis sein eigenes Makefile enthält), weiß keine  der  individuellen  Instanzen  von
       make,  wie  viele  Prozesse  parallel  laufen. Daher wäre es unmöglich, ohne Kommunikation zwischen allen
       laufenden make-Instanzen die Anzahl der Prozesse unter der  Obergrenze  zu  halten.  Zwar  sind  Lösungen
       möglich,   bei  denen  ein  make  der  obersten  Ebene  als  zentrale  Steuerung  fungiert,  oder  andere
       Synchronisationsmechanismen wie gemeinsamer Speicher oder Sockets erstellt  werden  können,  benutzt  die
       aktuelle Implementierung einfach eine gemeinsame Pipe.

       Diese Pipe wird vom make-Prozess der obersten Ebene angelegt und an alle untergeordneten makes übergeben.
       Der  make-Prozess der obersten Ebene schreibt N-1 Ein-Byte-Token in die Pipe (wobei angenommen wird, dass
       das make der obersten Ebene einen Token für sich selbst reserviert). Wann immer einer  der  make-Prozesse
       (einschließlich  des make der obersten Ebene) eine neue Aufgabe ausführen muss, liest er ein Byte aus der
       gemeinsamen Pipe. Falls keine Tokens mehr übrig  sind,  muss  er  warten,  bis  ein  Token  in  die  Pipe
       zurückgeschrieben  wird. Sobald die Ausführung des Prozesses abgeschlossen ist, schreibt der make-Prozess
       einen Token in die Pipe zurück (und hebt, falls die Tokens ausgeschöpft waren, die Blockierung des ersten
       make-Prozesses auf, der auf einen Token wartet). Da nur N-1 Tokens in die Pipe geschrieben wurden, können
       zu jeder Zeit nicht mehr als N Prozesse ausgeführt werden.

       Falls der auszuführende Auftrag kein untergeordnetes  make  ist,  wird  make  die  Dateideskriptoren  der
       Auftragsserver-Pipe schließen, bevor die Befehle aufgerufen werden, so dass sich der Befehl nicht mit dem
       Auftragsserver überschneidet und der Befehl keine ungewöhnlichen Dateideskriptoren vorfindet.

FEHLER

       Siehe das Kapitel »Problems and Bugs« in The GNU Make Manual.

AUTOR

       Diese   Handbuchseite   wurde   von  Dennis  Morse  von  der  Stanford  University  geschrieben.  Spätere
       Aktualisierungen stammen von Mike Frysinger. Sie wurde von Roland McGrath überarbeitet und  wird  derzeit
       von Paul Smith betreut.

COPYRIGHT

       Copyright © 1992-1993, 1996-2016 Free Software Foundation, Inc. Diese Datei ist Teil von GNU make.

       GNU Make ist freie Software; Sie können es weitergeben und/oder verändern, solange Sie sich an die Regeln
       der  »GNU  General Public License« halten, so wie sie von der Free Software Foundation festgelegt wurden;
       entweder in Version 3 der Lizenz oder (nach Ihrem Ermessen) in jeder neueren Version.

       GNU Make wurde mit dem Ziel veröffentlicht, dass Sie es nützlich finden, jedoch OHNE  JEGLICHE  GARANTIE,
       sogar  ohne  eine  implizite  Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN SPEZIELLEN ZWECK.
       Schauen Sie für weitere Informationen bitte in der »GNU General Public License« (GNU GPL) nach.

       Zusammen mit diesem Programm sollten Sie außerdem eine Kopie der »GNU General  Public  License«  erhalten
       haben. Wenn dem nicht so ist, siehe http://www.gnu.org/licenses/.

ÜBERSETZUNG

       Die  deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com>
       und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
       Mailingliste der Übersetzer.

GNU                                             28. Februar 2016                                         MAKE(1)