.\" 2000 PTM Przemek Borys <pborys@dione.ids.pl>
.TH MAKE 1 "22 sierpnia 1989" "GNU" "LOKALNE KOMENDY UŻYTKOWNIKA"
.SH NAZWA
make \- narzędzie GNU make do obsługi grup programów
.SH SKŁADNIA
.B "make "
[
.B \-f
.I makefile
] [ opcja ] ...
cel ...
.SH OSTRZEŻENIE
Ta strona podręcznika man jest ekstraktem dokumentacji
.I GNU make .
Jest ona odświeżana tylko od czasu do czasu, gdyż projekt GNU nie używa
nroff. Dla kompletnej i aktualnej dokumentacji przeczytaj plik Info,
.BR make.info ,
który został stworzony ze źródła Texinfo
.BR make.texinfo .

Od tłumacza: tak naprawdę w wypadku narzędzi takich jak make aktualność nie
jest istotna, gdyż z zasady powinny być one (po względem obsługi) jak 
najkompatybilniejsze z różnymi, nawet "przedpotopowymi" implementacjami.
.SH OPIS
\fI Uwaga! To tłumaczenie może być nieaktualne!\fP
.PP
.LP
Celem istnienia narzędzia
.I 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
.IR make ,
napisaną przez Richarda Stallmana, zwanego wujkiem Ryśkiem i Rolanda
McGratha.
Nasze przykłady to programy w C, gdyż są one najpopularniejsze.
.I Make
może być jednak używany z dowolnym językiem programowania, którego
kompilator można uruchomić z linii poleceń.
W rzeczywistości,
.I 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.)
.LP
Aby przygotować się do używania
.IR make ,
musisz napisać plik o nazwie
.IR 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).
.LP
Gdy istnieje już potrzebny Makefile, za każdą zmianą plików źródłowych
wystarczy proste polecenie powłoki:
.sp 1
.RS
.B make
.RE
.sp 1
zajmie się ono wszelkimi niezbędnymi rekompilacjami.
Program
.I make
używa danych 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 bazie Makefile.
.LP
W rzeczywistości (patrząc fizycznie),
.I make
wykonuje komendy
.I Makefile
w celu odświeżenia jednego lub więcej
.IR celów ,
gdzie
.I cel
jest zwykle programem. (Ściślej, \fIcel\fR 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.

program:program.c program.h

\fR--przyp.tłum.)

Jeśli nie ma podanej żadnej  opcji
.BR \-f ,
make szuka plików Makefile pod następującymi nazwami:
.IR GNUmakefile ,
.IR makefile
i
.IR Makefile .
Obowiązuje podana kolejność. Najpopularniejsze w użyciu są nazwy
\fIMakefile\fR, gdyż są przenośne i pojawiają się na początku posortowanego
listingu plików.
.LP
Jeśli plik
.I Makefile
jest okreslony jako `\-', to jest nim standardowe wejście.
.LP
.I make
odświeża cel tylko jeśli zależy od plików, które zostały zmienione od czasu
utworzenia ostatniego celu, lub jeśli cel jeszcze nie istnieje.
.SH OPCJE
.sp 1
.TP 0.5i
.B \-b
.TP 0.5i
.B \-m
Opcje te są ignorowane i istnieją dla zgodności z innymi wersjami 
.IR make .
.TP 0.5i
.BI "\-C " katalog
Zmienia przed odczytywaniem plików Makefile katalog bieżący na
.IR katalog .
Jeśli podanych jest wiele opcji
.B \-C
to każda jest interpretowana względem poprzedniej:
.BR "\-C " /
.BR "\-C " etc
jest równoważne
.BR "\-C " /etc.
Jest to zazwyczaj używane w rekursywnych wywołaniach
.IR make .
.TP 0.5i
.B \-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
.IR make .
.TP 0.5i
.B \-e
Daje zmiennym środowiskowym pierwszeństwo nad zmiennymi plików Makefile.
.TP 0.5i
.BI "\-f " plik
Jako Makefile użyj
.IR pliku .
.TP 0.5i
.B \-i
Ignoruj wszelkie błędy komendy wykonywanych przy odświeżaniu plików.
.TP 0.5i
.BI "\-I " katalog
Podaje 
.IR katalog ,
w którym szukać załączanych (included) plików Makefile.
Jeśli podanych jest kilka opcji
.BR \-I ,
to są on przeszukiwane w podanej kolejności.
W przeciwieństwie do innych flag
.IR make ,
katalogi podane flagami
.B \-I
mogą następować bezpośrednio po fladze:
.BI \-I dir
jest równoważne
.BI "\-I " dir.
Składnia ta jest udostępniona dla kompatybilności z flagą
.B \-I
preprocesora języka C.
.TP 0.5i
.BI "\-j " jobs
Podaje dozwoloną liczbę zadań (komend), którą można wykonywać naraz. Jeśli
jest więcej niż jedna opcja
.BR \-j ,
ostatnia jest znacząca.
Jeśli opcja
.B \-j
jest podana bez argumentu,
.IR make
nie będzie ograniczać liczby możliwych zadań.
.TP 0.5i
.B \-k
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.
.TP 0.5i
.B \-l
.TP 0.5i
.BI "\-l " obciążenie
Określa, że nie należy uruchamiać nowych zadań (komend) jeśli pracują już
inne, a obciążenie wynosi co najmniej
.I obciążenie
(liczba zmiennoprzecinkowa).
Bez argumentów, usuwany jest poprzedni limit.
.TP 0.5i
.B \-n
Drukuj komendy, które byłyby wykonywane, lecz nie wykonuj ich.
.TP 0.5i
.BI "\-o " plik
Nie odświeżaj pliku
.I plik
nawet jeśli jest starszy niż jego zależności i nie odświeżaj niczego na
konto zmian
.IR pliku .
Ogólnie, plik jest traktowany jako bardzo stary, a jego reguły są
ignorowane.
.TP 0.5i
.B \-p
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
.B \-v
(patrz niżej).
Aby wydrukować bazę danych bez odświeżania plików, użyj
.B make
.B \-p
.BI \-f /dev/null.
.TP 0.5i
.B \-q
``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.
.TP 0.5i
.B \-r
Eliminuje używanie wbudowanych reguł niejawnych. Czyści też domyślną listę
reguł przyrostkowych.
.TP 0.5i
.B \-s
Ciche działanie; nie drukuje wykonywanych komend.
.TP 0.5i
.B \-S
Anuluje efekty opcji
.BR \-k .
Nie jest to zwykle potrzebne, poza 
.I make
rekursywnym, gdzie
.B \-k
może być dziedziczone z wyższych poziomów
.I make
poprzez MAKEFLAGS, lub w wypadku gdy ustawisz
.B \-k
w MAKEFLAGS w swoim środowisku.
.TP 0.5i
.B \-t
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ń
.IR make .
.TP 0.5i
.B \-v
Drukuj wersję programu
.I make
oraz prawa kopiowania, listę autorów i notkę, że nie ma gwarancji.
Po wydrukowaniu tej informacji, przetwarzanie działa normalnie.
Aby uzyskać informację bez robienia innych rzeczy, użyj
.B make
.B \-v
.BI \-f /dev/null.
.TP 0.5i
.B \-w
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
.IR make .
.TP 0.5i
.BI "\-W " plik
Udaj, że cel
.I plik
został właśnie zmodyfikowany.
Po użyciu z flagą
.BR \-n ,
pokazuje ci to, co stałoby się, gdybyś rzeczywiście zmodyfikował ten plik.
Bez opcji
.BR \-n ,
jest to prawie równoważne uruchomieniu na podanym pliku komendy
.I touch .
Jedyną różnicą jest fakt, że czas modyfikacji jest tu zmieniany tylko w
wyobraźni
.IR make .
.SH "ZOBACZ TAKŻE"
.I "The GNU Make Manual"
.SH BŁĘDY
Zobacz rozdział `Problems and Bugs' w
.IR "The GNU Make Manual" .
.SH AUTOR
Podręcznik ten został stworzony przez Dennisa Morse'a z Uniwersytetu Stanforda.
Został przerobiony przez Rolanda McGratha.
.SH "INFORMACJE O TŁUMACZENIU"
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i 
\fImoże nie być aktualne\fR. W razie zauważenia różnic między powyższym opisem
a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie 
się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
.IP
man \-\-locale=C 1 make
.PP
Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod
adresem http://sourceforge.net/projects/manpages\-pl/.
