.\" -*- coding: UTF-8 -*-
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH MAKE 1 "28 lutego 2016" GNU "Polecenia użytkownika"
.SH NAZWA
make \- narzędzie GNU make do obsługi grup programów
.SH SKŁADNIA
\fBmake\fP [\fIOPCJA\fP]... [\fIOBIEKT\fP]...
.SH OPIS
.LP
Celem istnienia narzędzia \fBmake\fP jest automatyczne określanie, które
elementy dużego programu należy rekompilować oraz wydawanie fizycznych
komend rekompilacji. Podręcznik ten opisuje implementację GNU \fBmake\fP,
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.  \fBMake\fP może być jednak używany z dowolnym językiem
programowania, którego kompilator można uruchomić z linii poleceń.  W
rzeczywistości, \fBmake\fP 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ą.
.LP
Aby przygotować się do używania \fBmake\fP, należy utworzyć plik zwany
\fImakefile\fP, który opisuje związki zależności między plikami danego programu
oraz udostępnia komendy, wykonywane do odświeżania plików. W programie,
zwykle plik wykonywalny jest aktualizowany z plików obiektów, które z kolei
są tworzone przez kompilację plików źródłowych.
.LP
Gdy istnieje już potrzebny makefile, za każdą zmianą plików źródłowych
wystarczy proste polecenie powłoki:
.sp 1
.RS
\fBmake\fP
.RE
.sp 1
zajmie się ono wszelkimi niezbędnymi rekompilacjami. Program \fBmake\fP 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.
.LP
\fBmake\fP wykonuje komendy w \fImakefile\fP w celu odświeżenia jednej lub więcej
\fInazw\fP, gdzie \fInazwa\fP jest zwykle programem. Jeśli nie poda się opcji
\fB\-f\fP, \fBmake\fP poszuka plików makefile w następującej kolejności:
\fIGNUmakefile\fP, \fImakefile\fP i \fIMakefile\fP.
.LP
Zwykle, powinno się nazywać swoje makefile jako \fImakefile\fP lub \fIMakefile\fP
(przy czym zalecamy \fIMakefile\fP, ponieważ pojawi się on wówczas na początku
wypisywanej zawartości katalogu, obok innych ważnych plików takich jak
\fIREADME\fP). W większości makefile nie zaleca się nazwy sprawdzanej jako
pierwsza \[em] \fIGNUmakefile\fP. Należy jej używać tylko w przypadku makefile,
który jest typowy dla GNU \fBmake\fP i nie zostałby zrozumiany przez inne
wersje \fBmake\fP. Jeśli \fImakefile\fP wyniesie \[Bq]\-\[rq], odczytywane jest
standardowe wejście.
.LP
\fBmake\fP aktualizuje cel, jeśli zależy on od plików wstępnych, które zostały
zmodyfikowane od czasu ostatniej modyfikacji celu oraz gdy cel nie istnieje.
.SH OPCJE
.sp 1
.TP  0.5i
\fB\-b\fP, \fB\-m\fP
Opcje te są ignorowane i istnieją dla zgodności z innymi wersjami \fBmake\fP.
.TP  0.5i
\fB\-B\fP, \fB\-\-always\-make\fP
Bezwarunkowo tworzy wszystkie obiekty.
.TP  0.5i
\fB\-C\fP \fIkatalog\fP, \fB\-\-directory=\fP\fIkatalog\fP
Zmienia przed odczytywaniem plików makefile katalog bieżący na \fIkatalog\fP.
Jeśli podanych jest wiele opcji \fB\-C\fP to każda jest interpretowana względem
poprzedniej: \fB\-C / \-C etc\fP jest równoważne \fB\-C /etc\fP.  Jest to zazwyczaj
używane w rekurencyjnych wywołaniach \fBmake\fP.
.TP  0.5i
\fB\-d\fP
Wypisuje informacje diagnostyczne. Informacje te mówią, które pliki wybrano
do odświeżania, które czasy modyfikacji były porównywane i z jakimi
rezultatami, które pliki wymagają odświeżenia, które niejawne reguły są
stosowane \[em] wszystko co można wymyślić ciekawego o sposobie działania
\fBmake\fP.
.TP  0.5i
\fB\-\-debug\fP[\fB=\fP\fIFLAGI\fP]
Wyświetla informacje diagnostyczne oprócz zwykłych komunikatów
przetwarzania. Jeśli pominie się \fIFLAGI\fP, to zachowanie jest takie samo,
jak gdyby podano \fB\-d\fP. \fIFLAGAMI\fP mogą być: \fIa\fP aby wyświetlać wszystkie
informacje (odpowiednik \fB\-d\fP), \fIb\fP \[em] podstawowe, \fIv\fP \[em]
podstawowe, lecz bardziej szczegółowe, \fIi\fP \[em] pokazuje operacje
wyszukiwania wynikające z reguł pośrednich, \fIj\fP \[em] szczegóły wywoływania
poleceń oraz \fIm\fP \[em] diagnostyka przy ponownym tworzeniu makefile. Aby
wyłączyć wszystkie poprzednie opcje diagnostyki należy podać \fIn\fP.
.TP  0.5i
\fB\-e\fP, \fB\-\-environment\-overrides\fP
Daje zmiennym środowiskowym pierwszeństwo nad zmiennymi plików makefile.
.TP  0.5i
\fB\-f\fP \fIplik\fP, \fB\-\-file=\fP\fIplik\fP, \fB\-\-makefile=\fP\fIPLIK\fP
Jako makefile używa \fIpliku\fP.
.TP  0.5i
\fB\-i\fP, \fB\-\-ignore\-errors\fP
Ignoruje wszelkie błędy komend wykonywanych przy odświeżaniu plików.
.TP  0.5i
\fB\-I\fP \fIkatalog\fP, \fB\-\-include\-dir=\fP\fIkatalog\fP
Podaje \fIkatalog\fP, w którym szukać załączanych (included) plików makefile.
Jeśli podanych jest kilka opcji \fB\-I\fP, to są on przeszukiwane w podanej
kolejności.  W przeciwieństwie do innych flag \fBmake\fP, katalogi podane
flagami \fB\-I\fP mogą następować bezpośrednio po fladze: \fB\-I\fP\fIdir\fP jest
równoważne \fB\-I \fP\fIdir\fP. Składnia ta jest udostępniona dla kompatybilności z
flagą \fB\-I\fP preprocesora języka C.
.TP  0.5i
\fB\-j\fP [\fIzadania\fP], \fB\-\-jobs\fP[\fB=\fP\fIzadania\fP]
Podaje dozwoloną liczbę \fIzadań\fP (komend), którą można wykonywać
naraz. Jeśli jest więcej niż jedna opcja \fB\-j\fP, ostatnia jest
znacząca. Jeśli opcja \fB\-j\fP jest podana bez argumentu, \fBmake\fP nie będzie
ograniczać liczby możliwych zadań. Gdy \fBmake\fP wywołuje \fBpod\-make\fP,
wszystkie instancje make będą koordynowane, aby uruchomić podaną liczbę
zadań jednocześnie; więcej informacji w rozdziale \fBRÓWNOLEGŁE MAKE I JOBSERVER\fP.
.TP  0.5i
\fB\-\-jobserver\-fds\fP [\fIR,W\fP]
Wewnętrzna opcja, której \fBmake\fP używa to przekazania numerów deskryptorów
pliku odczytu i zapisu, potoku jobserver, do plików \fBpod\-make\fP; więcej
szczegółów w rozdziale \fBRÓWNOLEGŁE MAKE I JOBSERVER\fP
.TP  0.5i
\fB\-k\fP, \fB\-\-keep\-going\fP
Kontynuuje 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.
.TP  0.5i
\fB\-l\fP [\fIobciążenie\fP], \fB\-\-load\-average\fP[\fB=\fP\fIobciążenie\fP]
Określa, że nie należy uruchamiać nowych zadań (komend) jeśli pracują już
inne, a obciążenie wynosi co najmniej \fIobciążenie\fP (liczba
zmiennoprzecinkowa).  Bez argumentów, usuwany jest poprzedni limit.
.TP  0.5i
\fB\-L\fP, \fB\-\-check\-symlink\-times\fP
Używa ostatniego mtime między dowiązaniem a celem.
.TP  0.5i
\fB\-n\fP, \fB\-\-just\-print\fP, \fB\-\-dry\-run\fP, \fB\-\-recon\fP
Wypisuje komendy, które byłyby wykonywane, lecz nie wykonuje ich (z
wyjątkiem pewnych okoliczności).
.TP  0.5i
\fB\-o\fP \fIplik\fP, \fB\-\-old\-file=\fP\fIplik\fP, \fB\-\-assume\-old=\fP\fIplik\fP
Nie odświeża pliku \fIplik\fP nawet jeśli jest starszy niż jego zależności i
nie odświeża niczego na konto zmian \fIpliku\fP. Ogólnie, plik jest traktowany
jako bardzo stary, a jego reguły są ignorowane.
.TP  0.5i
\fB\-O\fP[\fItyp\fP], \fB\-\-output\-sync\fP[\fB=\fP\fItyp\fP]
Przy uruchamianiu wielu zadań równoległe za pomocą \fB\-j\fP, upewnia się, że
wynik wszystkich zadań jest łączony, zamiast przepleciony pomiędzy
sobą. Jeśli nie poda się \fItypu\fP lub gdy wynosi on \fBtarget\fP, grupowany jest
wynik całego przepisu dla wszystkich celów. Jeśli \fItyp\fP wynosi \fBline\fP,
grupowany jest wynik każdego wiersza polecenia z przepisu. Jeśli \fItypem\fP
jest \fBrecurse\fP, grupowany jest wynik każdego rekurencyjnego make. Jeśli
\fItyp\fP wynosi \fBnone\fP, synchronizacja wyjścia jest wyłączona.
.TP  0.5i
\fB\-p\fP, \fB\-\-print\-data\-base\fP
Wypisuje 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. Wypisuje to też informacje o wersji, podawane przez
przełącznik \fB\-v\fP (patrz niżej). Aby wypisać bazę danych bez odświeżania
plików, proszę użyć \fImake \-p \-f/dev/null\fP.
.TP  0.5i
\fB\-q\fP, \fB\-\-question\fP
\[Bq]Tryb pytania\[rq]. Nie uruchamia żadnych komend i niczego nie wypisuje;
zwraca tylko status zakończenia, który może być zerowy jeśli cele są świeże,
lub niezerowy w innym przypadku.
.TP  0.5i
\fB\-r\fP, \fB\-\-no\-builtin\-rules\fP
Eliminuje używanie wbudowanych reguł niejawnych. Czyści też domyślną listę
reguł przyrostkowych.
.TP  0.5i
\fB\-R\fP, \fB\-\-no\-builtin\-variables\fP
Wyłącza definiowanie wbudowanych zmiennych.
.TP  0.5i
\fB\-s\fP, \fB\-\-silent\fP, \fB\-\-quiet\fP
Ciche działanie; nie wypisuje wykonywanych komend.
.TP  0.5i
\fB\-S\fP, \fB\-\-no\-keep\-going\fP, \fB\-\-stop\fP
Anuluje efekty opcji \fB\-k\fP. Nie jest to zwykle potrzebne, poza \fBmake\fP
rekurencyjnym, gdzie \fB\-k\fP może być dziedziczone z wyższych poziomów \fBmake\fP
poprzez MAKEFLAGS, lub w wypadku gdy ustawi się \fB\-k\fP w MAKEFLAGS w swoim
środowisku.
.TP  0.5i
\fB\-t\fP, \fB\-\-touch\fP
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ń \fBmake\fP.
.TP  0.5i
\fB\-\-trace\fP
Wypisywana jest informacja o dyspozycji każdego celu (dlaczego cel jest
przebudowywany i jakie polecenia są uruchamiane w celu przebudowania go).
.TP  0.5i
\fB\-v\fP, \fB\-\-version\fP
Wyświetla wersję \fBmake\fP, informację o prawach autorskich, listę autorów
oraz zastrzeżenie o braku gwarancji.
.TP  0.5i
\fB\-w\fP, \fB\-\-print\-directory\fP
Wypisuje komunikat, zawierający katalog bieżący przed i po działaniu. Może
to być przydatne do śledzenia błędów w skomplikowanych zagnieżdżeniach
rekursywnego \fBmake\fP.
.TP  0.5i
\fB\-\-no\-print\-directory\fP
Wyłącza \fB\-w\fP, nawet jeśli było ono włączone domyślnie.
.TP  0.5i
\fB\-W\fP \fIplik\fP, \fB\-\-what\-if=\fP\fIplik\fP, \fB\-\-new\-file=\fP\fIplik\fP, \fB\-\-assume\-new=\fP\fIplik\fP
Udaje, że cel \fIplik\fP został właśnie zmodyfikowany. Po użyciu z flagą \fB\-n\fP,
pokazuje to, co stałoby się, gdyby rzeczywiście zmodyfikowano ten plik.  Bez
opcji \fB\-n\fP, jest to prawie równoważne uruchomieniu na podanym pliku komendy
\fItouch\fP. Jedyną różnicą jest fakt, że czas modyfikacji jest tu zmieniany
tylko w wyobraźni \fBmake\fP.
.TP  0.5i
\fB\-\-warn\-undefined\-variables\fP
Ostrzega przy odwołaniach do niezdefiniowanych zmiennych.
.SH "STATUS ZAKOŃCZENIA"
GNU \fBmake\fP kończy działanie z zerem, jeśli wszystkie pliki makefile zostały
pomyślnie przeanalizowane i nie wystąpiły cele, których nie udało się
zbudować. Status o wartości jeden zostanie zwrócony jeśli podano \fB\-q\fP, a
\fBmake\fP stwierdził, że cel wymaga przebudowania. Status o wartości dwa
oznacza wystąpienie błędów.
.SH "ZOBACZ TAKŻE"
Pełna dokumentacja dla programu \fBmake\fP jest utrzymywana jako podręcznik
Texinfo. Jeśli programy  \fBinfo\fP oraz \fBmake\fP są właściwie zainstalowane,
polecenie
.IP
\fBinfo make\fP
.PP
powinno dać dostęp do pełnego podręcznika. Dodatkowo, podręcznik jest
również dostępny online pod adresem
\fIhttps://www.gnu.org/software/make/manual/html_node/index.html\fP
.SH "RÓWNOLEGŁE MAKE I JOBSERVER"
Przy użyciu opcji \fI\-j\fP, użytkownik może poinstruować \fBmake\fP, aby
wykonywało zadania równolegle. Podając argument liczbowy do \fI\-j\fP, można
określić górny limit równoległych zadań do uruchomienia.
.PP
Gdy środowisko budowania wygląda w ten sposób, że \fBmake\fP najwyższego
poziomu wywołuje \fBpod\-make\fP (np. każdy podkatalog zawiera swój
\fIMakefile\fP), żadna z instancji \fBmake\fP nie wie, jak wiele zadań działa
równolegle, co uniemożliwiałoby utrzymywanie liczby zadań poniżej
narzuconego limitu, bez komunikacji pomiędzy działającymi instancjami
\fBmake\fP. Choć możliwe są rozwiązania, w których \fBmake\fP najwyższego poziomu
działa jako główny kontrolujący, można utworzyć też inne mechanizmy
synchronizacji, takie jak pamięć dzielona czy gniazda, obecna implementacja
korzysta jedynie z dzielonego potoku.
.PP
Potok jest tworzony przez proces \fBmake\fP najwyższego poziomu i przekazywany
do wszystkie \fBpod\-make\fP. Proces \fBmake\fP najwyższego poziomu zapisuje
jednobajtowe tokeny \fBN\-1\fP do potoku (\fBmake\fP najwyższego poziomu ma
zarezerwować jeden token dla siebie). Gdy jakiś proces \fBmake\fP (w tym
\fBmake\fP najwyższego poziomu) musi uruchomić nowe zadanie, odczytuje bajt z
dzielonego potoku. Jeśli nie zostały już żadne tokeny, musi poczekać na
zwrotne zapisanie tokenu do potoku. Po zakończeniu zadania, proces \fBmake\fP
zapisuje token zwrotnie do potoku (zatem, jeśli token został wykorzystany,
odblokowuje pierwszy proces \fBmake\fP oczekujący na odczytanie
tokenu). Ponieważ do potoku zostało zapisane jedynie \fBN\-1\fP tokenów,
jednocześnie może działać nie więcej niż \fBN\fP zadań.
.PP
Jeśli zadanie do wykonania nie jest zadaniem \fBpod\-make\fP, \fBmake\fP zamknie
deskryptory pliku potoku jobserver przed wywołaniem polecenia, dzięki czemu
polecenie nie będzie interferowało z \fIjobserver\fP, a polecenia nie napotkają
żadnych nietypowych deskryptorów plików.
.SH USTERKI
Zob. rozdział \[Bq]Problems and Bugs\[rq] w \fIThe GNU Make Manual\fP.
.SH AUTOR
Podręcznik ten został stworzony przez Dennisa Morse'a z Uniwersytetu
Stanforda. Dalsze aktualizacje wprowadził Mike Frysinger. Podręcznik został
przepisany przez Rolanda McGratha. Utrzymuje go Paul Smith.
.SH PRAWA AUTORSKIE
Copyright \(co 1992\-1993, 1996\-2016 Free Software Foundation, Inc.  Ten plik
jest częścią \fIGNU make\fP.
.LP
GNU Make jest wolnym oprogramowaniem; można go dystrybuować i/lub
modyfikować zgodnie z warunkami licencji GNU General Public License
opublikowanej przez Free Software Foundation; w wersji 3 Licencji lub (wedle
uznania) późniejszej.
.LP
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.
.LP
Wraz z \fBmake\fP powinien być dostarczony egzemplarz Powszechnej Licencji
Publicznej GNU (GNU General Public License) \-
zob. \fIhttp://www.gnu.org/licenses/\fP.
.PP
.SH 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>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
