.\" 2000 PTM Przemek Borys .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/.