MAKE(1)

NAZWA
make - narzędzie GNU make do obsługi grup programów

SKŁADNIA
make [OPCJA]... [OBIEKT]...

OPIS

Celem istnienia narzędzia make jest automatyczne określanie, które elementy dużego programu należy rekompilować oraz wydawanie fizycznych komend rekompilacji. Podręcznik ten opisuje implementację GNU make, napisaną przez Richarda Stallmana i Rolanda McGratha, a obecnie utrzymywaną przez Paula Smitha. Nasze przykłady to programy w C, gdyż są one bardzo popularne. Make może być jednak używany z dowolnym językiem programowania, którego kompilator można uruchomić z linii poleceń. W rzeczywistości, make nie jest ograniczone do programów. Np. można go używać do opisywania dowolnego zadania, w którym część plików musi być odświeżana automatycznie na podstawie innych za każdym razem gdy one się zmienią. (Np. polskie XFAQ jest zrealizowane na tej zasadzie--przyp. tłum.)

Aby przygotować się do używania make, musisz napisać plik o nazwie Makefile, który opisuje związki zależności między plikami twojego programu (np. obiekt.o musi być rekompilowany po każdej zmianie obiekt.c lub obiekt.h) oraz określa komendy, wykonywane do odświeżania plików (np. gcc -c obiekt.c).

Gdy istnieje już potrzebny Makefile, za każdą zmianą plików źródłowych wystarczy proste polecenie powłoki:

    make

zajmie się ono wszelkimi niezbędnymi rekompilacjami. Program make używa opisu z Makefile oraz czasów modyfikacji plików i w ten sposób decyduje, który z nich odświeżyć. Dla każdego z wymagających odświeżenia plików wykonywane są komendy, zapisane w pliku Makefile.

W rzeczywistości (patrząc fizycznie), make wykonuje komendy Makefile w celu odświeżenia jednego lub więcej celów, gdzie cel jest zwykle programem. (Ściślej, cel jest dowolnym łańcuchem znaków pliku Makefile, który znajduje się na początku linii i kończy się dwukropkiem [za którym znajdują się obiekty zależności], np.

Normally you should call your makefile either makefile or Makefile. (We recommend Makefile because it appears prominently near the beginning of a directory listing, right near other important files such as README.) The first name checked, GNUmakefile, is not recommended for most makefiles. You should use this name if you have a makefile that is specific to GNU make, and will not be understood by other versions of make. If makefile is '-', the standard input is read.

make updates a target if it depends on prerequisite files that have been modified since the target was last modified, or if the target does not exist.

OPCJE

-b, -m
    Opcje te są ignorowane i istnieją dla zgodności z innymi wersjami make.

-B, --always-make
    Bezwarunkowe utworzenie wszystkich obiektów.

-C katalog, --directory=katalog
    Zmienia przed odczytywaniem plików Makefile katalog bieżący na katalog. Jeśli podanych jest wiele opcji -C to każda jest interpretowana względem poprzedniej: -C / -C etc jest równoważne -C /etc. Jest to zazwyczaj używane w rekursywnych wywołaniach make.

-d  Drukuje informacje debuggowe. Informacje te mówią, które pliki wybrano do odświeżania, które czasy modyfikacji były porównywane i z jakimi rezulatatami, które pliki wymagają odświeżenia, które niejawne reguły są stosowane---wszystko co można wymyślić ciekawego o sposobie działania make.

--debug[=FLAGI]
    Print debugging information in addition to normal processing. If the FLAGS are omitted, then the behavior is the same as if -d was specified. FLAGS may be a for all debugging output (same as using -d), b for basic debugging, v for more verbose basic debugging, i for showing implicit rules, j for details on invocation of commands, and m for debugging while remaking makefiles. Use n to disable all previous debugging flags.

-e, --environment-overrides
    Daje zmiennym środowiskowym pierwszeństwo nad zmiennymi plików Makefile.

-E łańcuch, --eval łańcuch
    Intepretuje łańcuch przy pomocy funkcji eval, przed przetworzeniem plików Makefile.

-f plik, --file=plik, --makefile=PLIK
    Jako Makefile użyj pliku.

-i, --ignore-errors
    Ignoruj wszelkie błędy komendy wykonywanych przy odświeżaniu plików.

-I katalog, --include-dir=katalog
    Podaje katalog, w którym szukać załączanych (included) plików Makefile. Jeśli podanych jest kilka opcji -I, to są on przeszukiwane w podanej kolejności. W przeciwieństwie do innych flag make, katalogi podane flagami -I mogą następować bezpośrednio po fladze: -Idir jest równoważne -I dir. Składnia ta jest udostępniona dla kompatybilności z flagą -I preprocesora języka C.

-j [jobs], --jobs[=jobs]
    Podaje dozwoloną liczbę zadań (komend), którą można wykonywać naraz. Jeśli jest więcej niż jedna opcja -j, ostatnia jest znacząca. Jeśli opcja -j jest podana bez argumentu, make nie będzie ograniczać liczby możliwych zadań.

-k, --keep-going
    Kontynuuj ile się da po błędzie. Chociaż cel, który się nie powiódł i zależności na nim się opierające nie mogą być zbudowane, to można przetworzyć inne zależności celów.

-l [obciążenie], --load-average[=obciążenie]
    Określa, że nie należy uruchamiać nowych zadań (komend) jeśli pracują już inne, a obciążenie wynosi co najmniej obciążenie (liczba zmiennoprzecinkowa). Bez argumentów, usuwany jest poprzedni limit.

-L, --check-symlink-times
    Używanie ostatniego mtime między dowiązaniem a celem.

-n, --just-print, --dry-run, --recon
    Drukuj komendy, które byłyby wykonywane, lecz nie wykonuj ich (z wyjątkiem pewnych okoliczności).

-o plik, --old-file=plik, --assume-old=plik
    Nie odświeżaj pliku plik nawet jeśli jest starszy niż jego zależności i nie odświeżaj niczego na konto zmian pliku. Ogólnie, plik jest traktowany jako bardzo stary, a jego reguły są ignorowane.

-O[typ], --output-sync[=typ]
    When running multiple jobs in parallel with -j, ensure the output of each job is collected together rather than interspersed with output from other jobs. If type is not specified or is target the output from the entire recipe for each target is grouped together. If type is line the output from each command line within a recipe is grouped together. If type is recurse output from an entire recursive make is grouped together. If type is none output synchronization is disabled.

-p, --print-data-base
    Drukuje bazę danych (reguły i wartości zmiennych), które wynikają z odczytanych plików Makefile. Następnie wykonuje się w trybie normalnym, chyba że podano inaczej. Drukuje to też informacje o wersji, podawane przez przełącznik -v (patrz niżej). Aby wydrukować bazę danych bez odświeżania plików, użyj make -p -f/dev/null.

-q, --question
    “Tryb pytania”. Nie uruchamia żadnych komend i niczego nie drukuje; zwraca tylko kod wyjścia, który może być zerowy jeśli cele są świeże, lub niezereowy jeśli są stęchłe.

-r, --no-builtin-rules
    Eliminuje używanie wbudowanych reguł niejawnych. Czyści też domyślną listę reguł przyrostkowych.

-R, --no-builtin-variables
    Wyłącza definiowanie wbudowanych zmiennych.

-s, --silent, --quiet
    Ciche działanie; nie drukuje wykonywanych komend.

--no-silent
    Wyłącza -s.

-S, --no-keep-going, --stop
    Wyłącza -k.

-t, --touch
    Dotyka plików (zaznacza je jako odświeżone, bez zmieniania zawartości), zamiast normalnego uruchamiania komend. Jest to używane do udawania, że komendy zostały wykonane w celu ogłupienia przyszłych wywołań make.

--trace
    Information about the disposition of each target is printed (why the target is being rebuilt and what commands are run to rebuild it).

-v, --version
    Wyświetla wersję make, informację o prawach autorskich, listę autorów oraz zastrzeżenie o braku g

-w, --print-directory
    Drukuj komunikat, zawierający katalog bieżący przed i po działaniu. Może to być przydatne do ścigania błędów w skomplikowanych zagnieżdżeniach rekursywnego make.

--no-print-directory
    Wyłącza -w, nawet jeśli było ono włączone domyślnie.

-W plik, --what-if=plik, --new-file=plik, --assume-new=plik
    Udaj, że cel plik został właśnie zmodyfikowany. Po użyciu z flagą -n, pokazuje ci to, co stałoby się, gdybyś rzeczywiście zmodyfikował ten plik. Bez opcji -n, jest to prawie równoważne uruchomieniu na podanym pliku komendy touch. Jedyną różnicą jest fakt, że czas modyfikacji jest tu zmieniany tylko w wyobraźni make.

--warn-undefined-variables
    Ostrzega przy odwołaniach do niezdefiniowanych zmiennych.

KOD ZAKOŃCZENIA
GNU make exits with a status of zero if all makefiles were successfully parsed and no targets that were built failed. A status of one will be returned if the -q flag was used and make determines that a target needs to be rebuilt. A status of two will be returned if any errors were encountered.

ZOBACZ TAKŻE
Pełna dokumentacja dla programu make jest utrzymywana jako podręcznik Texinfo. Jeśli programy info oraz make są właściwie zainstalowane, polecenie

    info make

powinno dać dostęp do pełnego podręcznika.

BŁĘDY
Zobacz rozdział `Problems and Bugs' w The GNU Make Manual.

AUTOR
This manual page contributed by Dennis Morse of Stanford University. Further updates contributed by Mike Frysinger. It has been reworked by Roland McGrath. Maintained by Paul Smith.

PRAWA AUTORSKIE
Copyright © 1992-1993, 1996-2020 Free Software Foundation, Inc. Ten plik jest częścią GNU make.

GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

GNU Make rozpowszechniany jest z nadzieją, iż będzie użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania bliższych informacji sięgnij do Powszechnej Licencji Publicznej GNU.

Wraz z make powinieneś otrzymać egzemplarz Powszechnej Licencji Publicznej GNU (GNU General Public License) - zobacz http://www.gnu.org/licenses/.

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.