La utilidad make determina automáticamente qué partes de un programa grande necesitan recompilarse y emite las órdenes necesarias para recompilarlas. Este manual describe la versión GNU, es decir, GNU make. GNU make fue implementado por Richard Stallman y Roland McGrath, y a partir de la versión 3.76 su desarrollo lo ha continuado Paul D. Smith.
GNU make cumple con la sección 6.2 de la IEEE Standard 1003.2-1992 (POSIX.2).
Los ejemplos de este libro muestran programas en C, por ser el lenguaje más habitual. Sin embargo, make puede usarse con cualquier lenguaje de programación cuyo compilador se pueda ejecutar mediante una orden de shell. Es más, make no se limita a los programas. Puede emplearse para describir cualquier tarea en la que ciertos archivos deban actualizarse automáticamente a partir de otros cada vez que estos cambian.
Para preparar el uso de make, debe escribir un archivo llamado makefile. Este archivo describe las relaciones entre los archivos que componen su programa y proporciona las órdenes para actualizar cada uno de ellos. En un programa típico, el archivo ejecutable se genera a partir de archivos objeto, que a su vez se obtienen compilando archivos fuente.
Una vez que existe un makefile adecuado, cada vez que modifique algún archivo fuente bastará con teclear esta sencilla orden de shell:
make
Con eso se realizan todas las recompilaciones necesarias. El programa make utiliza la base de datos del makefile y las marcas de tiempo de última modificación de los archivos para decidir cuáles deben actualizarse. Para cada uno de esos archivos, emite las recetas (recipe, las acciones que ejecuta la regla) registradas en la base de datos.
Puede controlar qué archivos deben recompilarse, y de qué manera, pasando argumentos en la línea de órdenes a make. Consulte el capítulo Cómo ejecutar make.
Si está empezando con make, o busca una introducción general, lea los primeros apartados de cada capítulo y omita los posteriores. En cada capítulo, los primeros apartados contienen información introductoria o general, mientras que los últimos contienen información especializada o técnica. La excepción es el segundo capítulo, «Introducción a los makefiles», que es introductorio en su totalidad.
Si ya conoce otros programas make, consulte el capítulo Características de GNU make, que enumera las mejoras que ofrece GNU make, y también Incompatibilidades y características no implementadas, que explica las pocas cosas que les faltan a GNU make y que otros sí tienen.
Para obtener un resumen rápido, consulte el resumen de opciones, la referencia rápida y el apartado Nombres especiales de objetivos integrados.
Si tiene problemas con GNU make o cree haber encontrado un error, comuníquelo a los desarrolladores; no podemos prometer nada, pero es muy posible que queramos corregirlo.
Antes de informar de un error, asegúrese de haber encontrado realmente uno. Vuelva a leer con atención la documentación y compruebe si de verdad indica que puede hacer lo que está intentando hacer. Si no queda claro si debería poder hacer algo o no, comuníquelo también: ¡eso es un error de la documentación!
Antes de informar de un error o de intentar corregirlo usted mismo, trate de aislarlo en el makefile más pequeño posible que reproduzca el problema. A continuación, envíenos ese makefile y el resultado exacto que make le devolvió, incluidos los mensajes de error o de advertencia. No parafrasee esos mensajes: lo mejor es copiarlos y pegarlos tal cual en su informe. Al elaborar ese makefile reducido, procure no usar herramientas no libres ni poco habituales en sus recetas: casi siempre puede emular lo que haría una de esas herramientas con simples órdenes de shell. Por último, no olvide explicar qué esperaba que ocurriera; esto nos ayudará a decidir si el problema estaba realmente en la documentación.
Una vez que tenga el problema bien acotado, puede comunicarlo de dos maneras. O bien enviando un correo electrónico a:
bug-make@gnu.org
o bien utilizando nuestra herramienta de gestión de proyectos basada en web, en:
https://savannah.gnu.org/projects/make/
Además de la información anterior, tenga cuidado de incluir el número de versión de make que está usando. Puede obtener ese dato con la orden make --version. Asegúrese también de indicar el tipo de máquina y el sistema operativo que utiliza. Una forma de obtener esta información es mirar las últimas líneas de salida de la orden make --help.
Si tiene un cambio de código que le gustaría enviar, consulte el apartado «Submitting Patches» del archivo README para más información.
(N. del T.: las direcciones de contacto anteriores corresponden al proyecto original (GNU), tal como figuran en el texto fuente. Los informes de errores conviene redactarlos en inglés y no debe comunicar a GNU los errores de la propia traducción. Para cuestiones relativas a esta traducción, diríjase a ecoop.net.)