Scroll to navigation

MAKE(1) Órdenes de usuario MAKE(1)

NOMBRE

make - Herramienta 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 las órdenes del makefile para actualizar uno o más objetivos, que suelen ser un programa. Si no se define -f, make buscará archivos GNUmakefile, makefile y MakeFile, en ese orden.

En general, se debería llamar al archivo de makefile makefile o Makefile. Se recomienda Makefile porque aparecerá cerca del comienzo en una lista de directorios, justo cerca de otros archivos importantes como README. El primer nombre seleccionado, GNUmakefile, no se recomienda para la mayoría de los makefiles. Sólo se debería usar este nombre si el archivo es específico de GNU Make, y no puede ser interpretado por otras versiones de make. Si makefile es '-', se leerá 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

Estas opciones no hacen nada, y solo se reconocen por compatibilidad con otras versiones de make.
Ejecuta incondicionalmente todos los objetivos.
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.
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.
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 cualquiera o todos los nombres siguientes, separados por comas o espacios. Sólo el primer carácter es significativo: el resto puede omitirse: all para todos los resultados de depuración (el mismo que usando -d), basic para una depuración más simple, verbose para una depuración más amplia, implicit para mostrar operaciones de búsqueda de reglas implícitas, jobs para ver detalles sobre invocación de órdenes, makefile para depurar durante la reconstrucción de archivos de makefile, print muestra todo lo que se va ejecutando aunque no tengan salida alguna, y why muestra la razón por la que make decidió reconstruir cada objetivo. Utilice none para desactivar todas las opciones de depuración anteriores.
Da a las variables que vienen del entorno precedencia a las que vienen de los makefiles.
Interpreta string mediante la función eval, antes de analizar cualquier makefile.
Emplea fichero como un makefile.
No tiene en cuenta ningún error en las órdenes ejecutadas para reconstruir ficheros.
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.
Especifica el número de trabajos (órdenes) que se deban ejecutar simultáneamente. Si hay más de una opción -j, solo la última vale. Si se da la opción -j sin ningún argumento, make no pondrá límites al número de trabajos que puedan ejecutarse simultáneamente.
El estilo del servidor de tareas a utilizar. El style puede ser uno de fifo, pipe, o sem (sólo Windows).
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.
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.
Emplea el tiempo de la última modificación entre los enlaces simbólicos y el objetivo.
Muestra las órdenes que se ejecutarían, pero no se ejecutan salvo en alguna circunstancia concreta.
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.
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.
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.
“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.
Elimina el empleo de las reglas implícitas incorporadas. También borra la lista predeterminada de sufijos para las reglas de sufijo.
No define ninguna variable interna.
Modo de operación silencioso; no muestra las órdenes que se están ejecutando.
Cancela el efectvo de la opción -s.
Cancela el efecto de la opción -k.
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.
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).
Muestra la versión de make más un copyright, una lista de autores y un aviso de ausencia de garantía.
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.
Desactiva -w aunque haya sido indicada expresamente.
Activa la ordenación de fines y requisitos previos. MODE es uno entre none para deshabilitar el modo shuffle, random para ordenar los prerequisitos en orden aleatorio, reverse para considerarlos en orden inverso, o un número entero <semilla> que habilita el modo Random con un valor semilla específico. Si se omite MODE el predeterminado será random.
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.
Avisa en caso de referenciar alguna variable sin definir.

ESTADO DE SALIDA

GNU Make finaliza con estado de salida cero si todos los makefiles se analizaron con éxito y no falló ninguna de los objetivos que se construyeron. Se devolverá un estado de uno si se utilizó la opción -q y make determina que se necesita reconstruir un 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

debería mostrarle el manual completo.

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-2023 Free Software Foundation, Inc. Este archivo es 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, vea https://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.

26 de mayo de 2023 GNU