MAKE(1) | Polecenia użytkownika | MAKE(1) |
make - narzędzie GNU make do obsługi grup programów
make [OPCJA]... [OBIEKT]...
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:
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.
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.
Pełna dokumentacja dla programu make jest utrzymywana jako podręcznik Texinfo. Jeśli programy info oraz make są właściwie zainstalowane, polecenie
should give you access to the complete manual. Additionally, the manual is also available online at https://www.gnu.org/software/make/manual/html_node/index.html
Using the -j option, the user can instruct make to execute tasks in parallel. By specifying a numeric argument to -j the user may specify an upper limit of the number of parallel tasks to be run.
When the build environment is such that a top level make invokes sub-makes (for instance, a style in which each sub-directory contains its own Makefile ), no individual instance of make knows how many tasks are running in parallel, so keeping the number of tasks under the upper limit would be impossible without communication between all the make instances running. While solutions like having the top level make serve as a central controller are feasible, or using other synchronization mechanisms like shared memory or sockets can be created, the current implementation uses a simple shared pipe.
This pipe is created by the top-level make process, and passed on to all the sub-makes. The top level makeprocesswrites N-1 one-byte tokens into the pipe (The top level make is assumed to reserve one token for itself). Whenever any of the make processes (including the top-level make ) needs to run a new task, it reads a byte from the shared pipe. If there are no tokens left, it must wait for a token to be written back to the pipe. Once the task is completed, the make process writes a token back to the pipe (and thus, if the tokens had been exhausted, unblocking the first make process that was waiting to read a token). Since only N-1 tokens were written into the pipe, no more than N tasks can be running at any given time.
If the job to be run is not a sub-make then make will close the jobserver pipe file descriptors before invoking the commands, so that the command can not interfere with the jobserver, and the command does not find any unusual file descriptors.
Zobacz rozdział `Problems and Bugs' w The GNU Make Manual.
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.
Copyright © 1992-1993, 1996-2016 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/.
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 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.
28 lutego 2016 | GNU |