make: utilidad GNU Make para mantener grupos de programas
SINTAXIS
make [OPCIÓN]... [OBJETIVO]...
DESCRIPCIÓN
La utilidad make determinará automáticamente qué partes de un programa grande deben recompilarse e emitirá los comandos para recompilarlas. El manual describe la implementación GNU de make, que fue escrita por Richard Stallman y Roland McGrath, y que actualmente mantiene Paul Smith. Nuestros ejemplos muestran programas en C, ya que son muy comunes, pero puede utilizar make con cualquier lenguaje de programación cuyo compilador pueda ejecutarse con un comando de shell. De hecho, make no se limita a los programas. Puede utilizarlo para describir cualquier tarea en la que algunos archivos deban actualizarse automáticamente a partir de otros, siempre que los otros cambien.
Para prepararse para utilizar make, debe escribir un archivo llamado archivo make que describa las relaciones entre los archivos de su programa y proporcione comandos para actualizar cada archivo. En un programa, normalmente el archivo ejecutable se actualiza a partir de los archivos objeto, que a su vez se crean compilando los archivos de origen.
Una vez que existe un archivo make adecuado, cada vez que realice cambios en algunos archivos de origen, este simple comando de shell:
make
será suficiente para realizar todas las recomplicaciones necesarias. El programa make utiliza la descripción del archivo make y los tiempos de la última modificación de los archivos para decidir qué archivos deben actualizarse.
Para cada uno de esos archivos, emite los comandos registrados en el archivo make.
make ejecuta comandos en el archivo make para actualizar uno o más objetivos, donde un objetivo es normalmente un
programa. Si no está presente la opción -f, make buscará los archivos make GNUmakefile, makefile y
Makefile, en ese orden.
Normalmente, debe denominar su archivo make ya sea makefile o Makefile. (Recomendamos Makefile porque aparece de forma destacada cerca del principio de una lista de directorios, justo al lado de otros archivos importantes, como README). El primer nombre que se comprueba, GNUmakefile, no se recomienda para la mayoría de los archivos make. Debe utilizar este nombre si tiene un archivo make que es específico de GNU Make y que no será comprendido por otras versiones de make. Si makefile es '-', la entrada estándar se lee.
make actualiza un objetivo si depende de archivos de requisitos previos que se han modificado desde que se modificó el objetivo por última vez, o si el objetivo no existe.
OPCIONES
-b, -m
Estas opciones se ignoran para la compatibilidad con otras versiones de make.
-B, --always-make
Recompile incondicionalmente todos los objetivos.
-C dir, --directory=dir
Cambie al directorio dir antes de leer los archivos make o de hacer cualquier otra cosa. Si se especifican varias opciones -C, cada una se interpreta en relación con la anterior: -C / -C etc. es equivalente a -C /etc. Esto se suele utilizar con invocaciones recursivas de make.
-d Imprime información de depuración además del procesamiento normal. La información de depuración
indica qué archivos se están considerando para volver a generar, qué tiempos de archivo se están comparando y
con qué resultados, qué archivos realmente deben volver a generarse, qué reglas implícitas se consideran y cuáles se aplican: todo lo interesante sobre cómo `make` decide qué hacer.
--debug[=FLAGS]
Imprime información de depuración además del procesamiento normal. Si se omiten los FLAGS,
entonces el comportamiento es el mismo que si se especificara -d. Los FLAGS pueden ser cualquiera de los siguientes nombres, separados por comas o espacios. Solo el primer carácter es significativo: el
resto puede omitirse: all para toda la salida de depuración (igual que usar -d), basic para depuración básica,
verbose para una depuración básica más detallada, implicit para mostrar las operaciones de búsqueda de reglas implícitas, jobs para detalles sobre la invocación de comandos, makefile para depurar durante la regeneración
de archivos makefile, print muestra todas las recetas que se ejecutan incluso si están en silencio, y why muestra
la razón por la que make decidió volver a generar cada objetivo. Use none para desactivar todas las marcas de depuración
anteriores.
-e, --environment-overrides
Da a las variables tomadas del entorno precedencia sobre las variables de los archivos makefile.
-E string, --eval string
Interpreta string utilizando la función eval, antes de analizar cualquier archivo makefile.
-f file, --file=file, --makefile=FILE
Utiliza file como archivo makefile.
-i, --ignore-errors
Ignora todos los errores en los comandos ejecutados para volver a generar archivos.
-I dir, --include-dir=dir
Especifica un directorio dir para buscar archivos makefile incluidos. Si se utilizan varias opciones -I
para especificar varios directorios, los directorios se buscan en el orden especificado. A diferencia de
los argumentos de otras marcas de make, los directorios que se proporcionan con las marcas -I pueden aparecer directamente después de la marca: -Idir está permitido, así como -I dir. Esta sintaxis está permitida para la compatibilidad
con la marca -I del preprocesador de C.
-j [jobs], --jobs[=jobs]
Especifica el número de trabajos (comandos) que se ejecutarán simultáneamente. Si hay más de una opción -j,
la última es la que tiene efecto. Si se proporciona la opción -j sin un argumento, make no limitará
el número de trabajos que se pueden ejecutar simultáneamente.
--jobserver-style=style
El estilo de servidor de trabajos que se utilizará. El estilo puede ser uno de fifo, pipe o sem (solo Windows).
-k, --keep-going
Continúa tanto como sea posible después de un error. Si bien el objetivo que falló, y aquellos que dependen de él, no se pueden volver a generar, las otras dependencias de estos objetivos aún se pueden procesar.
-l [load], --load-average[=load]
Especifica que no se deben iniciar nuevos trabajos (comandos) si hay otros trabajos en ejecución y
la carga promedio es al menos load (un número de punto flotante). Sin un argumento, elimina un
límite de carga anterior.
-L, --check-symlink-times
Utiliza el mtime más reciente entre los enlaces simbólicos y el objetivo.
-n, --just-print, --dry-run, --recon
Imprime los comandos que se ejecutarían, pero no los ejecuta (excepto en ciertas circunstancias).
-o file, --old-file=file, --assume-old=file
No reconstruya el archivo file aunque sea más antiguo que sus dependencias, y no reconstruya nada debido a los cambios en el archivo. Esencialmente, el archivo se trata como si fuera muy antiguo y sus reglas se ignoran.
-O[type], --output-sync[=type]
Cuando se ejecutan varios trabajos en paralelo con -j, asegúrese de que la salida de cada trabajo se recopile junta en lugar de intercalarse con la salida de otros trabajos. Si type no se especifica o es target, la salida de toda la receta para cada objetivo se agrupa. Si type es line, la salida de cada línea de comando dentro de una receta se agrupa. Si type es recurse, la salida de toda una invocación recursiva de make se agrupa. Si type es none, la sincronización de salida se desactiva.
-p, --print-data-base
Imprima la base de datos (reglas y valores de variables) resultante de leer los archivos Makefile; luego ejecute como de costumbre o según se especifique. Esto también imprime la información de la versión dada por la opción -v (vea más abajo). Para imprimir la base de datos sin intentar reconstruir ningún archivo, use make -p -f/dev/null.
-q, --question
``Modo de pregunta''. No ejecute ningún comando, ni imprima nada; simplemente devuelva un estado de salida que sea cero si los objetivos especificados ya están actualizados, distinto de cero en caso contrario.
-r, --no-builtin-rules
Elimine el uso de las reglas implícitas incorporadas. También borre la lista predeterminada de sufijos para las reglas de sufijo.
-R, --no-builtin-variables
No defina ninguna variable incorporada.
-s, --silent, --quiet
Operación silenciosa; no imprima los comandos a medida que se ejecutan.
--no-silent
Anule el efecto de la opción -s.
-S, --no-keep-going, --stop
Anule el efecto de la opción -k.
-t, --touch
Toque los archivos (marque que están actualizados sin realmente cambiarlos) en lugar de ejecutar sus comandos. Esto se utiliza para simular que se ejecutaron los comandos, con el fin de engañar a las futuras invocaciones de make.
--trace
Se imprime información sobre la disposición de cada objetivo (por qué se está reconstruyendo el objetivo y qué comandos se ejecutan para reconstruirlo).
-v, --version
Imprima la versión del programa make más un aviso de derechos de autor, una lista de autores y un aviso de que no hay garantía.
-w, --print-directory
Imprima un mensaje que contenga el directorio de trabajo antes y después de otro procesamiento. Esto puede ser útil para rastrear errores de anidaciones complicadas de comandos make recursivos.
--no-print-directory
Desactive -w, incluso si se activó implícitamente.
--shuffle[=MODE]
Habilite el cambio aleatorio del orden de los objetivos y los requisitos previos. MODE es uno de none para deshabilitar el modo de cambio aleatorio, random para cambiar los requisitos previos en orden aleatorio, reverse para considerar los requisitos previos en orden inverso o un entero <seed> que habilita el modo aleatorio con un valor de semilla específico. Si no se especifica MODE, el valor predeterminado es random.
-W file, --what-if=file, --new-file=file, --assume-new=file
Simule que el archivo de destino se ha modificado. Cuando se usa con la opción -n, esto le muestra lo que sucedería si modificara ese archivo. Sin -n, es casi lo mismo que ejecutar un comando touch en el archivo dado antes de ejecutar make, excepto que la hora de modificación se cambia solo en la imaginación de make.
--warn-undefined-variables
Advierte cuando se hace referencia a una variable no definida.
ESTADO DE SALIDA
GNU Make sale con un estado de cero si todos los archivos Make se analizaron correctamente y ninguna de las tareas que se construyeron falló. Se devolverá un estado de uno si se utilizó la opción -q y Make determina que una tarea necesita ser reconstruida. Se devolverá un estado de dos si se encontraron errores.
VÉASE TAMBIÉN
La documentación completa de Make se mantiene como un manual Texinfo. Si los programas info y make están instalados correctamente en su sitio, el comando
info make
debería darle acceso al manual completo.
ERRORES
Consulte el capítulo "Problemas y errores" en El manual de GNU Make.
AUTOR
Esta página de manual fue contribuida por Dennis Morse de la Universidad de Stanford. Se realizaron actualizaciones adicionales por Mike Frysinger. Ha sido reelaborada por Roland McGrath. Mantenida por Paul Smith.
DERECHOS DE AUTOR
Copyright © 1992-1993, 1996-2023 Free Software Foundation, Inc. Este archivo es parte de GNU Make.
GNU Make es software libre; puede redistribuirlo y/o modificarlo bajo los términos de la GNU General Public License publicada por la Free Software Foundation; ya sea la versión 3 de la Licencia, o (a su opción) cualquier versión posterior.
GNU Make se distribuye con la esperanza de que sea útil, pero SIN NINGÚN TIPO DE GARANTÍA; ni siquiera la garantía implícita de COMERCIABILIDAD o ADECUACIÓN PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para obtener más detalles.
Debería haber recibido una copia de la GNU General Public License junto con este programa. Si no es así, consulte https://www.gnu.org/licenses/.