MAKE(1) Ordenes de usuario MAKE(1) NOMBRE make - Herramienta para mantener grupos de programas SINOPSIS make [OPCION]... [OBJETIVO]... DESCRIPCION El proposito de la utilidad make es determinar automaticamente que partes de un programa grande necesitan ser recompiladas, y ejecutar las ordenes pertinentes para recompilarlas. Este manual describe la implementacion de make del proyecto GNU, que ha sido escrita por Richard Stallman y Roland McGrath. Nuestros ejemplos muestran programas en C, que es lo mas comun, pero se puede emplear make con cualquier lenguaje de programacion cuyo compilador pueda ejecutarse con una orden del shell. De hecho, make no esta limitado a compilar programas. Se puede usar para describir cualquier tarea donde algunos ficheros deban ser actualizados automaticamente a partir de otros en cualquier momento en que estos 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 ordenes necesarias para actualizar cada fichero. En un programa, normalmente el fichero ejecutable se actualiza a partir de los ficheros o modulos objeto, los cuales a su vez se construyen mediante la compilacion de los ficheros con el codigo fuente. Una vez que exista un makefile apropiado, cada vez que cambiemos algun 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 ultima modificacion de los ficheros para decidir cuales de ellos necesitan ser actualizados. Para cada uno de esos ficheros, ejecuta las ordenes indicadas en el makefile. make ejecuta las ordenes del makefile para actualizar uno o mas objetivos, que suelen ser un programa. Si no se define -f, make buscara archivos GNUmakefile, makefile y MakeFile, en ese orden. En general, se deberia llamar al archivo de makefile makefile o Makefile. Se recomienda Makefile porque aparecera 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 mayoria de los makefiles. Solo se deberia usar este nombre si el archivo es especifico de GNU Make, y no puede ser interpretado por otras versiones de make. Si makefile es '-', se leera la entrada estandar. make actualiza un objetivo si este depende de ficheros de prerrequisito (o dependencias) que hayan sido modificados desde la ultima modificacion del objetivo, o si este 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 relacion a la anterior: -C / -C etc es equivalente a -C /etc. Esto se usa tipicamente en llamadas recursivas a make. -d Muestra informacion de depuracion ademas del procesamiento normal. Esta informacion dice que ficheros estan siendo considerados para ser rehechos, que tiempos de ficheros estan siendo comparados y con que resultados, que ficheros necesitan realmente ser rehechos, que reglas implicitas estan siendo tenidas en cuenta y cuales se estan aplicando: o sea, todo lo interesante sobre como make decide las cosas que tiene que hacer. --debug[=FLAGS] Muestra informacion de depuracion ademas 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. Solo el primer caracter es significativo: el resto puede omitirse: all para todos los resultados de depuracion (el mismo que usando -d), basic para una depuracion mas simple, verbose para una depuracion mas amplia, implicit para mostrar operaciones de busqueda de reglas implicitas, jobs para ver detalles sobre invocacion de ordenes, makefile para depurar durante la reconstruccion de archivos de makefile, print muestra todo lo que se va ejecutando aunque no tengan salida alguna, y why muestra la razon por la que make decidio reconstruir cada objetivo. Utilice none para desactivar todas las opciones de depuracion 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 funcion eval, antes de analizar cualquier makefile. -f fichero, --file=fichero, --makefile=FICHERO Emplea fichero como un makefile. -i, --ignore-errors No tiene en cuenta ningun error en las ordenes 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, estos 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 opcion -I del preprocesador de C. -j [trabajos], --jobs[=trabajos] Especifica el numero de trabajos (ordenes) que se deban ejecutar simultaneamente. Si hay mas de una opcion -j, solo la ultima vale. Si se da la opcion -j sin ningun argumento, make no pondra limites al numero de trabajos que puedan ejecutarse simultaneamente. --jobserver-style=estilo] El estilo del servidor de tareas a utilizar. El style puede ser uno de fifo, pipe, o sem (solo Windows). -k, --keep-going Continua tanto como sea posible tras un error. Mientras que el objetivo que ha fallado, y los que dependen de el, no pueden ser reconstruidos, las otras dependencias de estos objetivos si que pueden procesarse, asi que con esta opcion se procesan. -l [carga], --load-average[=carga] Dice que no debera empezarse ningun nuevo trabajo (mandato) si hay otros trabajos en ejecucion y la carga media es como poco carga (un numero real, en coma flotante). Sin el argumento, anula un limite anterior de carga, si lo hubiera. -L, --check-symlink-times Emplea el tiempo de la ultima modificacion entre los enlaces simbolicos y el objetivo. -n, --just-print, --dry-run, --recon Muestra las ordenes que se ejecutarian, pero no se ejecutan salvo en alguna circunstancia concreta. -o fichero, --old-file=fichero, --assume-old=fichero No reconstruye el fichero especificado, incluso siendo mas 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 multiples tareas en paralelo con -j, asegurese de que la salida de cada tarea se recoje por separado en lugar de mezclarse con el resultado de otras tareas. Si no esta definido type o es target se agrupara el resultado de toda la receta para cada objetivo. Si type es line el resultado de cada linea de ordenes dentro de una receta se agrupa. Si type es recurse se agrupa la salida de un make recursivo entero. Si type es none la sincronizacion de salida estara 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. Tambien se muestra la informacion de version dada por la opcion -v (vea mas abajo). Para ver la base de datos sin hacer ninguna otra cosa, de la orden make -p -f/dev/null. -q, --question "Modo de interrogacion (Query)". No ejecuta ninguna orden ni muestra nada; solo devuelve un status de salida cero si los objetivos especificados ya estan actualizados, o no cero si no lo estan. -r, --no-builtin-rules Elimina el empleo de las reglas implicitas incorporadas. Tambien 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 operacion silencioso; no muestra las ordenes que se estan ejecutando. --no-silent Cancela el efectvo de la opcion -s. -S, --no-keep-going, --stop Cancela el efecto de la opcion -k. -t, --touch Toca los ficheros (los marca como actualizados sin cambiarlos realmente) en vez de ejecutar las ordenes pertientes. Esto se emplea para pretender que las ordenes han sido ejecutadas, con el fin de enganar a futuras ejecuciones de make. --trace Se muestra informacion sobre la disposicion de cada objetivo (el motivo por el cual el objetivo esta siendo reconstruido y las ordenes para hacerlo). -v, --version Muestra la version de make mas un copyright, una lista de autores y un aviso de ausencia de garantia. -w, --print-directory Muestra un mensaje conteniendo el directorio de trabajo antes y despues de otro procesamiento. Esto puede ser util para seguir la pista a errores que vienen de anidamientos complicados de ordenes make recursivas. --no-print-directory Desactiva -w aunque haya sido indicada expresamente. --shuffle[=MODO] Activa la ordenacion 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 numero entero que habilita el modo Random con un valor semilla especifico. Si se omite MODE el predeterminado sera 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 opcion -n, esto nos ensena lo que pasaria si fueramos 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 modificacion se cambia solamente en la imaginacion de make. --warn-undefined-variables 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 exito y no fallo ninguna de los objetivos que se construyeron. Se devolvera un estado de uno si se utilizo la opcion -q y make determina que se necesita reconstruir un objetivo. Se devolvera un estado de dos si se encontraron errores. VEASE TAMBIEN La documentacion completa de make se mantiene como manual Texinfo. Si los programas info y make estan adecuadamente instalados en su sistema, la orden info make deberia mostrarle el manual completo. ERRORES Consulte el capitulo "Problems and Bugs" en The GNU Make Manual. AUTOR Dennis Morse, de la Stanford University, escribio originalmente esta pagina del Manual. Mike Frysinger y Roland McGrath trabajaron posteriormente en ella.Actualmente la mantiene Paul Smith. COPYRIGHT Copyright (C) 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 terminos de la Licencia Publica General de GNU publicada por la Free Software Foundation; la version 3 de la licencia, o (a su eleccion) cualquier version posterior. GNU Make se distribuye con la esperanza de que sea util, pero sin ninguna garantia; sin la garantia implicita de MERCANTABILIDAD o APTIDAD PARA UN PROPOSITO PARTICULAR. Consulte la Licencia Publica General de GNU para mas detalles. Deberia haber recibido una copia de la Licencia Publica General de GNU junto con este programa. Si no, vea https://www.gnu.org/licenses/. TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Gerardo Aburruzaga Garcia y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . GNU 26 de mayo de 2023 MAKE(1)