MAKE(1L) rdenes de Usuario MAKE(1L)
make - utilidad `make' de GNU para mantener grupos de programas
make [ -f makefile ] [ opcin ] ... [ variable=valor ] ... [ objetivo ]
...
Esta pgina del Manual es un extracto de la documentacin de GNU make.
Se actualiza slo ocasionalmente, porque el proyecto GNU no emplea nroff
(ni incluso groff ;-) para su documentacin. Para la documentacin com-
pleta y al da, remtase al fichero make en formato Info, o al fichero
make.dvi en formato DVI, que se construyen a partir del fichero fuente
escrito en TeXInfo make.texinfo.
El propsito de la utilidad make es determinar automticamente qu piezas
de un programa necesitan ser recompiladas, y lanzar las rdenes para
recompilarlas. Este manual describe la implementacin de make del
proyecto GNU, que ha sido escrita por el gran Richard Stallman y por
Roland McGrath. Nuestros ejemplos muestran programas en C, que es lo
ms comn, pero se puede emplear make con cualquier lenguaje de progra-
macin cuyo compilador pueda ejecutarse con una orden del shell. De
hecho, make no est limitado a compilar programas. Se puede usar para
describir cualquier tarea donde algunos ficheros deban ser actualizados
automticamente a partir de otros en cualquier momento en que stos cam-
bien.
Para prepararnos a utilizar make, debemos escribir antes un fichero
llamado el makefile que describe las relaciones entre los ficheros de
nuestro programa, y las rdenes necesarias para actualizar cada fichero.
En un programa, normalmente el fichero ejecutable se actualiza a partir
de los ficheros o mdulos objeto, los cuales a su vez se construyen
mediante la compilacin de los ficheros con el cdigo fuente.
Una vez que exista un makefile apropiado, cada vez que cambiemos algn
fichero fuente, esta simple orden:
make
basta y sobra para que se realicen todas las recompilaciones nece-
sarias. El programa make emplea los datos del makefile (y otros inter-
nos) y los tiempos de ltima modificacin de los ficheros para decidir
cules de ellos necesitan ser actualizados. Para cada uno de esos
ficheros, lanza las rdenes que tiene grabadas en su base de datos.
make ejecuta rdenes en el makefile para actualizar uno o ms nombres de
objetivo, donde nombre es tpicamente un programa. Si no se ha dado la
opcin -f, make buscar los makefiles llamados GNUmakefile, makefile, y
Makefile, en este orden, parando en el primero que encuentre y dando un
error si no encuentra ninguno.
Normalmente deberamos llamar a nuestro makefile o bien makefile o bien
Makefile. (Recomendamos Makefile porque normalmente aparece cerca del
principio del listado de un directorio, al lado de otros ficheros
importantes como LAME.) El primer nombre que se busca, GNUmakefile, no
se recomienda para la mayora de los makefiles. Solamente deberamos
emplear este nombre si tenemos un makefile que sea especfico del make
de GNU y no pueda ser ledo y comprendido por otras versiones de make.
Si makefile es `-', se lee de la entrada estndar.
make actualiza un objetivo si ste depende de ficheros de prerrequisito
(o dependencias) que hayan sido modificados desde la ltima modificacin
del objetivo, o si ste no existe.
-b
-m Estas opciones no hacen nada, y slo se reconocen por compatibili-
dad con otras versiones de make.
-C dir
Cambia el directorio de trabajo a dir antes de leer los makefiles
o hacer otra cosa. Si se especifican varias opciones -C, cada una
se interpreta en relacin a la anterior: -C / -C etc es equivalente
a -C /etc. Esto se usa tpicamente en llamadas recursivas a make.
-d Muestra informacin de depuracin adems del procesamiento normal.
Esta informacin dice qu ficheros estn siendo considerados para ser
rehechos, qu tiempos de ficheros estn siendo comparados y con qu
resultados, qu ficheros necesitan realmente ser rehechos, qu
reglas implcitas estn siendo tenidas en cuenta y cules se estn
aplicando: o sea, todo lo interesante sobre cmo make decide las
cosas que tiene que hacer.
-e Da a las variables que vienen del entorno precedencia a las que
vienen de los makefiles.
-f makefile
Emplea makefile como un makefile.
-i No tiene en cuenta ningn error en las rdenes ejecutadas para
reconstruir ficheros.
-I dir
Especifica un directorio dir en donde buscar makefiles incluidos.
Si se usan varias opciones -I para especificar varios directorios,
stos se buscan en el orden dado. De forma distinta a como se
deben dar los argumentos de otras opciones de make, los directo-
rios dados en las opciones -I pueden ir inmediatamente tras la I:
o sea, se permite tanto -Idir como -I dir. Esta sintaxis se per-
mite por compatibilidad con la misma opcin -I del preprocesador de
C.
-j trabajos
Especifica el nmero de trabajos (rdenes) que se deban ejecutar
simultneamente. Si hay ms de una opcin -j, slo la ltima vale. Si
se da la opcin -j sin ningn argumento, make no pondr lmites al
nmero de trabajos que puedan ejecutarse simultneamente.
-k Contina tanto como sea posible tras un error. Mientras que el
objetivo que ha fallado, y los que dependen de l, no pueden ser
reconstruidos, las otras dependencias de estos objetivos s que
pueden procesarse, as que con esta opcin se procesan.
-l
-l carga
Dice que no deber empezarse ningn nuevo trabajo (mandato) si hay
otros trabajos en ejecucin y la carga media es como poco carga (un
nmero real, en coma flotante). Sin el argumento, anula un lmite
anterior de carga, si lo hubiera.
-n Muestra las rdenes que se ejecutaran, pero no se hace nada ms. Muy
til.
-o fichero
No reconstruye el fichero especificado, incluso siendo ms antiguo
que sus dependencias, y tampoco reconstruye nada que dependa de
cambios en fichero. Esencialmente el fichero se trata como muy
viejo, y sus reglas no son tenidas en cuenta.
-p Muestra la base de datos (reglas y valores de variables) que
resultan de leer los makefiles; luego todo se procesa de la forma
usual o de la que se haya especificado. Tambin se muestra la
informacin de versin dada por la opcin -v (vea ms abajo). Para
ver la base de datos sin hacer ninguna otra cosa, d la orden make
-p -f/dev/null.
-q ``Modo de interrogacin (Query)''. No ejecuta ninguna orden ni
muestra nada; slo devuelve un status de salida cero si los obje-
tivos especificados ya estn actualizados, o no cero si no lo estn.
-r Elimina el empleo de las reglas implcitas incorporadas. Tambin
borra la lista predeterminada de sufijos para las reglas de
sufijo.
-s Modo de operacin silencioso; no muestra las rdenes que se estn
ejecutando.
-S Cancela el efecto de la opcin -k. Esto nunca es necesario salvo
en un make recursivo, en el que -k puede venir heredado del make
superior a travs de MAKEFLAGS o si activamos -k en la variable de
ambiente MAKEFLAGS.
-t Toca los ficheros (los marca como actualizados sin cambiarlos
realmente) en vez de ejecutar las rdenes pertientes. Esto se
emplea para pretender que las rdenes han sido ejecutadas, con el
fin de engaar a futuras ejecuciones de make.
-v Muestra la versin del programa make ms la lista de autores, una
nota sobre los derechos de copia y otra sobre la falta de garanta
y a dnde enviar informes de fallos. Despus de imprimirse esta
informacin, el procesamiento contina normalmente. Para obtener
esta informacin sin ningn otro efecto, d la orden make -v
-f/dev/null.
-w Muestra un mensaje conteniendo el directorio de trabajo antes y
despus de otro procesamiento. Esto puede ser til para seguir la
pista a errores que vienen de anidamientos complicados de rdenes
make recursivas.
-W fichero
Pretende que el objetivo fichero acaba de ser modificado. Cuando
se emplea con la opcin -n, esto nos ensea lo que pasara si furamos
a modificar ese fichero. Sin -n, es casi lo mismo que ejecutar la
orden touch en el fichero dado antes de dar la orden make, salvo
en que el tiempo de modificacin se cambia solamente en la imagi-
nacin de make.
variable=valor
Le da a la variable de make el valor especificado. Esta definicin
tiene precedencia sobre la que pudiera haber en el makefile.
objetivo
Cualquier argumento que no empiece por - o que no contenga un
signo = se considera un objetivo que make tiene que construir. Si
no se menciona ninguno en la lnea de rdenes, make construir el
primer objetivo que encuentre en el makefile.
/usr/info/make.info*
The GNU Make Manual
Consulte el captulo `Problems and Bugs' en The GNU Make Manual.
Dennis Morse, de la Stanford University, escribi originalmente esta
pgina del Manual. Roland McGrath trabaj posteriormente en ella. Fue
traducida al espaol por Gerardo Aburruzaga Garca (gerardo [AT] cica.es),
quien aadi adems algunas lneas (adems de sta ;-).
GNU 22 Agosto 1989 MAKE(1L)