Entendiendo el Comando Unix y Linux: make


El propósito de la utilidad make es determinar automáticamente qué partes de un programa grande necesitan ser recompiladas y emitir los comandos para recompilarlas. El manual describe la implementación de make en GNU, escrita por Richard Stallman y Roland McGrath. Estos ejemplos muestran programas C ya que son los más comunes, pero puede usar make con cualquier lenguaje de programación cuyo compilador puede ejecutarse con un comando 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 desde otros cada vez que éstos cambien.

Nota : Esta página es un extracto de la documentación de GNU make . Se actualiza sólo ocasionalmente porque el proyecto GNU no usa nroff. Para una documentación completa y actual, consulte el archivo de información make.info que se crea a partir del archivo de origen de Texinfo make.texinfo.

Sintaxis y preparación de la utilidad make

make [ -f makefile ] [ option ] …. target ….

Para prepararse para usar make, debe escribir un archivo llamado makefile que describa las relaciones entre los archivos de su programa e indique los comandos para actualizar cada archivo. Normalmente, un archivo ejecutable se actualiza a partir de archivos de objetos, que a su vez se crean compilando archivos de origen.

Una vez que existe un makefile adecuado, cada vez que cambie algunos archivos fuente, este simple comando shell make es suficiente para realizar todas las recompilaciones necesarias. El programa make utiliza la base de datos makefile y los últimos tiempos de modificación de los ficheros para decidir qué ficheros deben actualizarse. Para cada uno de estos archivos, emite los comandos registrados en la base de datos.

La utilidad make ejecuta comandos en el makefile para actualizar uno o más nombres de destino, donde name es típicamente un programa. Si no está presente la opción -f , make buscará los makefiles GNUmakefile , makefile , y Makefile , en ese orden.

Normalmente debería llamar a su makefile makefile o Makefile. (Se recomienda usar Makefile porque aparece de forma prominente al principio de la lista de directorios, justo al lado de otros archivos importantes como README .) El primer nombre comprobado, GNUmakefile, no se recomienda para la mayoría de los makefiles. Debería usar este nombre si tiene un makefile que es específico de GNU make y que no será entendido por otras versiones de make. Si makefile es , se lee la entrada estándar.

La utilidad make actualiza un destino si depende de los archivos de prerrequisitos que se han modificado desde la última vez que se modificó el destino, o si el destino no existe.

Opciones

Las opciones -b y -m son ignoradas para compatibilidad con otras versiones de make.

-C dir cambiará a directory dir antes de leer los makefiles o 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 usa típicamente con invocaciones recursivas de marca.

La opción -d imprimirá la información de depuración además del procesamiento normal. La información de depuración dice qué archivos se están considerando para rehacer, qué tiempos de archivo se están comparando y con qué resultados, qué archivos realmente necesitan rehacerse, qué reglas implícitas se están considerando y cuáles se están aplicando -todo lo interesante acerca de cómo make decide qué hacer.

La opción -e da prioridad a las variables tomadas del entorno sobre las variables de los makefiles.

El archivo -f fileoption utiliza file como un makefile.

La opción -i ignora todos los errores en los comandos ejecutados para rehacer archivos.

La opción -I dir especifica un directorio dir para buscar makefiles 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 banderas de fabricantes, los directorios dados con -I banderas pueden venir directamente después de la bandera: -Idir está permitido, así como -I dir . Esta sintaxis está permitida para la compatibilidad con el indicador del preprocesador C -I .

La opción -j 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 efectiva. Si la opción -j se da sin un argumento, make no limitará el número de trabajos que se pueden ejecutar simultáneamente.

La opción -k continúa lo más posible después de un error; mientras que el objetivo que falló, y los que dependen de él, no se pueden rehacer, las otras dependencias de estos objetivos se pueden procesar de todos modos.

Las opciones -l y -l load especifican que no se deben iniciar nuevos trabajos (comandos) si hay otros trabajos en ejecución, y el promedio de carga es al menos load (un número de punto flotante). Sin argumento, elimina un límite de carga anterior.

La opción -n imprime los comandos que se ejecutarían, pero no los ejecuta.

La opción -o file no rehace el archivo aunque sea más antiguo que sus dependencias, y no rehace nada debido a cambios en el archivo file. Esencialmente el archivo es tratado como muy antiguo y sus reglas son ignoradas.

La opción -p imprime la base de datos (reglas y valores de variables) que resulta de la lectura de los makefiles. A continuación, se ejecuta como de costumbre o como se especifique. Esto también imprime la información de versión dada por el parámetro -v (ver abajo). Para imprimir la base de datos sin intentar rehacer ningún archivo, utilice make -p -f/dev/null .

La opción -q establece el modo de pregunta. No ejecute ningún comando ni imprima nada, sólo devuelva un estado de salida que sea cero si los objetivos especificados ya están actualizados, de lo contrario, no será cero.

La opción -r elimina el uso de las reglas implícitas incorporadas. También borra la lista predeterminada de sufijos para las reglas de sufijos.

La opción -s silencia la operación. No imprime los comandos mientras se ejecutan.

La opción -S cancela el efecto de la opción -k . Esto nunca es necesario excepto en un makewhere recursivo -k puede ser heredado del make del nivel superior a través de MAKEFLAGS o si establece -k en MAKEFLAGS en su entorno.

La opción -t toca los archivos (los marca como actualizados sin cambiarlos realmente) en lugar de ejecutar sus comandos. Esto se usa para pretender que las órdenes se cumplieron, con el fin de engañar a futuras invocaciones de la marca.

La opción -v imprime la versión del programa make más un copyright, una lista de autores y un aviso de que no hay garantía.

La opción -w imprime un mensaje que contiene el directorio de trabajo antes y después de otro procesamiento. Esto puede ser útil para rastrear errores de nidos complicados de makeComandos recursivos.

El archivo -W opción pretende que el archivo de destino acaba de ser modificado. Cuando se utiliza con el indicador -n , esto muestra lo que sucedería si modificara ese archivo. Sin -n , es casi lo mismo que ejecutar un comando táctil en el archivo dado antes de ejecutar make, excepto que el tiempo de modificación se cambia sólo en la imaginación de make.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *