Provided by: manpages-es_4.23.1-1_all 

NOMBRE
make - utilidad `make' de GNU para mantener grupos de programas
SINOPSIS
make [OPCIÓN]... [OBJETIVO]...
DESCRIPCIÓN
El propósito de la utilidad make es determinar automáticamente qué partes de un programa grande necesitan
ser recompiladas, y ejecutar las órdenes pertinentes para recompilarlas. Este manual describe la
implementación de make del proyecto GNU, que ha sido escrita por Richard Stallman y Roland McGrath.
Nuestros ejemplos muestran programas en C, que es lo más común, pero se puede emplear make con cualquier
lenguaje de programación 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 automáticamente a partir de otros en cualquier momento en que éstos cambien.
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 módulos objeto,
los cuales a su vez se construyen mediante la compilación de los ficheros con el código fuente.
Una vez que exista un makefile apropiado, cada vez que cambiemos algún fichero fuente, esta simple orden:
make
es suficiente para que se realicen todas las recompilaciones necesarias. El programa make emplea los
datos del makefile (y otros internos) y los tiempos de última modificación de los ficheros para decidir
cuáles de ellos necesitan ser actualizados. Para cada uno de esos ficheros, ejecuta las órdenes
indicadas en el makefile.
make ejecuta órdenes en el makefile para actualizar uno o más nombres de objetivo, donde nombre es
típicamente un programa. Si no se ha dado la opción -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 deberíamos 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 LÉAME.) El primer nombre que se busca, GNUmakefile, no se recomienda para la mayoría de
los makefiles. Solamente deberíamos emplear este nombre si tenemos un makefile que sea específico del
make de GNU y no pueda ser leído y comprendido por otras versiones de make. Si makefile es `-', se lee
de la entrada estándar.
make actualiza un objetivo si éste depende de ficheros de prerrequisito (o dependencias) que hayan sido
modificados desde la última modificación del objetivo, o si éste no existe.
OPCIONES
-b, -m
Estas opciones no hacen nada, y solo se reconocen por compatibilidad con otras versiones de make.
-B, --always-make
Ejecuta incondicionalmente todos los objetivos.
-C dir, --directory=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 relación a la anterior: -C / -C etc es
equivalente a -C /etc. Esto se usa típicamente en llamadas recursivas a make.
-d Muestra información de depuración además del procesamiento normal. Esta información dice qué
ficheros están siendo considerados para ser rehechos, qué tiempos de ficheros están siendo
comparados y con qué resultados, qué ficheros necesitan realmente ser rehechos, qué reglas
implícitas están siendo tenidas en cuenta y cuáles se están aplicando: o sea, todo lo interesante
sobre cómo make decide las cosas que tiene que hacer.
--debug[=FLAGS]
Muestra información de depuración además del procesamiento normal. Si se omite FLAGS, el
comportamiento es el mismo que si se especificara -d. FLAGS puede ser a para todas las salidas de
depuración (el mismo que usando -d), b para una depuración básica, v para una depuración de algo más
detallada, i para mostrar reglas implícitas, j para los detalles sobre la invocación de órdenes, y m
para la depuración durante la reconstrucción de archivos makefile. Utilice n para desactivar todas
las opciones de depuración.
-e, --environment-overrides
Da a las variables que vienen del entorno precedencia a las que vienen de los makefiles.
-f fichero, --file=fichero, --makefile=FICHERO
Emplea fichero como un makefile.
-i, --ignore-errors
No tiene en cuenta ningún error en las órdenes ejecutadas para reconstruir ficheros.
-I dir, --include-dir=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 directorios dados en las opciones -I pueden
ir inmediatamente tras la I: o sea, se permite tanto -Idir como -I dir. Esta sintaxis se permite por
compatibilidad con la misma opción -I del preprocesador de C.
-j [trabajos], --jobs[=trabajos]
Define el número de tareas (órdenes) a ejecutar simultáneamente. Si hay más de una opción -j, la
última será la efectiva. Si se da la opción -j sin un argumento, make no limitará el número de
tareas que pueden ejecutarse simultáneamente. Cuando make invoca un sub-make, todas las instancias
de make se coordinarán para ejecutar el número especificado de tareas a la vez; consulte la sección
MAKE EN PARALELO Y EL SERVIDOR DE TAREAS para más detalles.
--jobserver-fds [R,W]
Opción interna que make utiliza para enviar los números de descriptores de archivo al servidor de
tareas a sub-make; véase la sección EJECUCIÓN PARALELA Y SERVIDOR DE TAREAS para más detalles
-k, --keep-going
Continúa 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 opción se procesan.
-l [carga], --load-average[=carga]
Dice que no deberá empezarse ningún nuevo trabajo (mandato) si hay otros trabajos en ejecución y la
carga media es como poco carga (un número real, en coma flotante). Sin el argumento, anula un
límite anterior de carga, si lo hubiera.
-L, --check-symlink-times
Emplea el tiempo de la última modificación entre los enlaces simbólicos y el objetivo.
-n, --just-print, --dry-run, --recon
Muestra las órdenes que se ejecutarían, pero no se ejecutan salvo en alguna circunstancia concreta.
-o fichero, --old-file=fichero, --assume-old=fichero
No reconstruye el fichero especificado, incluso siendo más 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.
-O[tipo], --output-sync[=tipo]
Al ejecutar múltiples tareas en paralelo con -j, asegúrese de que la salida de cada tarea se recoje
por separado en lugar de mezclarse con el resultado de otras tareas. Si no está definido type o es
target se agrupará el resultado de toda la receta para cada objetivo. Si type es line el resultado
de cada línea de órdenes dentro de una receta se agrupa. Si type es recurse se agrupa la salida de
un make recursivo entero. Si type es none la sincronización de salida estárá desactivada.
-p, --print-data-base
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. También se muestra la
información de versión dada por la opción -v (vea más abajo). Para ver la base de datos sin hacer
ninguna otra cosa, dé la orden make -p -f/dev/null.
-q, --question
“Modo de interrogación (Query)”. No ejecuta ninguna orden ni muestra nada; solo devuelve un status
de salida cero si los objetivos especificados ya están actualizados, o no cero si no lo están.
-r, --no-builtin-rules
Elimina el empleo de las reglas implícitas incorporadas. También borra la lista predeterminada de
sufijos para las reglas de sufijo.
-R, --no-builtin-variables
No define ninguna variable interna.
-s, --silent, --quiet
Modo de operación silencioso; no muestra las órdenes que se están ejecutando.
-S, --no-keep-going, --stop
Cancela el efecto de la opción -k. Esto nunca es necesario salvo en un make recursivo, en el que -k
puede venir heredado del make superior a través de MAKEFLAGS o si activamos -k en la variable de
entorno MAKEFLAGS.
-t, --touch
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 engañar a futuras ejecuciones de make.
--trace
Se muestra información sobre la disposición de cada objetivo (el motivo por el cual el objetivo está
siendo reconstruido y las órdenes para hacerlo).
-v, --version
Muestra la versión de make más un copyright, una lista de autores y un aviso de ausencia de
garantía.
-w, --print-directory
Muestra un mensaje conteniendo el directorio de trabajo antes y después de otro procesamiento. Esto
puede ser útil para seguir la pista a errores que vienen de anidamientos complicados de órdenes make
recursivas.
--no-print-directory
Desactiva -w aunque haya sido indicada expresamente.
-W fichero, --what-if=fichero, --new-file=fichero, --assume-new=fichero
Pretende que el objetivo fichero acaba de ser modificado. Cuando se emplea con la opción -n, esto
nos enseña lo que pasaría si fuéramos 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
modificación se cambia solamente en la imaginación de make.
--warn-undefined-variables
Avisa en caso de referenciar alguna variable sin definir.
ESTADO DE SALIDA
GNU make finaliza con un estado de salida cero si se analizaron sin problema todos los archivos makefile
y ningún objetivo construido dió error. Se devolverá un estado de salida uno si se utilizó la opción -q
y make determina que se necesita reconstruir algún objetivo. Se devolverá un estado de dos si se
encontraron errores.
VÉASE TAMBIÉN
La documentación completa de make se mantiene como manual Texinfo. Si los programas info y make están
adecuadamente instalados en su sistema, la orden
info make
debe darle acceso al manual completo. Además, el manual también está disponible en
https://www.gnu.org/software/make/manual/html_node/index.html
EJECUCIÓN PARALELA Y SERVIDOR DE TAREAS
Mediante la opción -j, el usuario indica a make que ejecute tareas en paralelo. Al especificar un
argumento numérico para -j, el usuario puede especificar la cantidad máxima de tareas paralelas a
ejecutar.
Cuando el entorno de compilación es tal que en un nivel superior make ejecuta sub-makes (por ejemplo, si
cada sub-directorio contiene su propio Makefile ), ninguna instancia individual de make sabe cuántas
tareas se ejecutan en paralelo, por lo que mantener el número de tareas por debajo del límite superior
sería imposible sin comunicación entre todas las instancias make en ejecución. Una solución factibles es
tener el nivel superior make para que sirva como un controlador central, , o el empleo de otros
mecanismos de sincronización como la memoria compartida o los sockets. La implementación actual utiliza
una simple tubería compartida.
Esta tubería la crea por el proceso make de nivel superior, y se transmite al resto de sub-makes. El
proceso make de nivel superior writes N-1 tokens de un byte en la tubería (el nivel superior make se
asume para reservar un token para sí mismo). Siempre que alguno de los procesos make (incluido el de
nivel superior Make) necesita ejecutar una nueva tarea, lee un byte del tubo compartido. Si no queda
ningún token, debe esperar a que se escriba un token de vuelta por la tubería. Una vez que la tarea se
completa, el proceso make escribe un token de vuelta a la tubería (y por lo tanto, si los tokens habían
sido agotados, desbloquea el primer proceso make que estaba esperando para leer un token). Dado que sólo
se escribieron N-1 tokens en la tubería, no se pueden ejecutar más de N tareas en ningún momento.
Si la tarea a ejecutar no es un sub-make, entonces make cerrará los descriptores de archivos de tuberías
del servidor de tareas antes de invocar las órdenes, de modo que no pueda interferir con el jobserver, ni
encuentre ningún descriptor de archivo inusual.
ERRORES
Consulte el capítulo “Problems and Bugs” en The GNU Make Manual.
AUTOR
Dennis Morse, de la Stanford University, escribió originalmente esta página del Manual. Mike Frysinger y
Roland McGrath trabajaron posteriormente en ella.Actualmente la mantiene Paul Smith.
COPYRIGHT
Copyright © 1992-1993, 1996-2016 Free Software Foundation, Inc. Este archivo forma parte de GNU make.
GNU Make es software libre; usted puede redistribuirlo y/o modificarlo bajo los términos de la Licencia
Pública General de GNU publicada por la Free Software Foundation; la versión 3 de la licencia, o (a su
elección) cualquier versión posterior.
GNU Make se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; sin la garantía
implícita de MERCANTABILIDAD o APTIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia Pública General
de GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no es
asi, consulte http://www.gnu.org/licenses/.
TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Gerardo Aburruzaga García
<gerardo.aburruzaga@uca.es> y Marcos Fouces <marcos@debian.org>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con
respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a
debian-l10n-spanish@lists.debian.org.
GNU 28 de febrero de 2016 MAKE(1)