oracular (1) make.1.gz

Provided by: manpages-de_4.23.1-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-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 © 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
       ⟨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⟩.