make - Herramienta para mantener grupos de programas
make [OPCIÓN]... [OBJETIVO]...
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.
- -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 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.
- -e,
--environment-overrides
- Da a las variables que vienen del entorno precedencia a las que vienen de
los makefiles.
- -E cadena,
--eval cadena
- Interpreta string mediante la función eval, antes de
analizar cualquier makefile.
- -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]
- 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.
- --jobserver-style=estilo]
- El estilo del servidor de tareas a utilizar. El style puede ser uno
de fifo, pipe, o sem (sólo Windows).
- -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.
- --no-silent
- Cancela el efectvo de la opción -s.
- -S, --no-keep-going,
--stop
- Cancela el efecto de la opción -k.
- -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.
- --shuffle[=MODO]
- 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.
- -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.
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.
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.
Consulte el capítulo “Problems and Bugs” en
The GNU Make Manual.
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 © 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/.
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.