Provided by: manpages-de_4.15.0-9_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-Tokens  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> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die GNU General Public License
       Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 ⟨debian-l10n-german@lists.debian.org⟩.