En el desarrollo de software , GNU Automake es una herramienta de programación para automatizar partes del proceso de compilación. Alivia los problemas habituales de compilación. Por ejemplo, apunta a las dependencias necesarias.
Desarrollador (es) | Proyecto GNU |
---|---|
Versión inicial | 28 de mayo de 1996 |
Lanzamiento estable | 1.16.3 / 18 de noviembre de 2020 [1] |
Repositorio | |
Sistema operativo | Multiplataforma |
Tipo | Herramienta de programación |
Licencia | Licencia pública general GNU |
Sitio web | www |
Genera automáticamente uno o más Makefile.in a partir de archivos llamados Makefile.am . Cada Makefile.am contiene, entre otras cosas, definiciones de variables útiles para el software compilado, como indicadores del compilador y enlazador , dependencias y sus versiones, etc. Los " Makefile.in " generados son portátiles y cumplen con las convenciones de Makefile en el Estándares de codificación GNU , y puede ser utilizado por los scripts de configuración para generar un Makefile funcional . [2]
La Free Software Foundation mantieneautomakecomo uno de los programas GNU y como parte del sistema de compilación GNU . Se utiliza para construir varias aplicaciones y bibliotecas GNU, como GTK , [3] así como software que no es GNU como XCircuit . [4]
Proceso
Automake tiene como objetivo permitir que el programador escriba un archivo MAKE en un lenguaje de nivel superior, en lugar de tener que escribir todo el archivo MAKE manualmente. En casos sencillos, basta con dar:
- Una línea que declara el nombre del programa a construir.
- Una lista de archivos de origen
- Una lista de opciones de la línea de comandos que se pasarán al compilador (por ejemplo, en qué directorios se encontrarán los archivos de encabezado)
- Una lista de opciones de la línea de comandos que se pasarán al enlazador (qué bibliotecas necesita el programa y en qué directorios se encuentran)
Automake también se encarga de generar automáticamente la información de dependencia , [5] para que cuando se modifique un archivo fuente, la próxima invocación del comando make sepa qué archivos fuente deben recompilarse. Si el compilador lo permite, Automake intenta hacer que el sistema de dependencias sea dinámico: siempre que se compila un archivo fuente, las dependencias de ese archivo se actualizan pidiendo al compilador que vuelva a generar la lista de dependencias del archivo. En otras palabras, el seguimiento de dependencias es un efecto secundario del proceso de compilación.
Esto intenta evitar el problema con algunos sistemas de dependencia estática, donde las dependencias se detectan solo una vez cuando el programador comienza a trabajar en el proyecto. [6] En tal caso, si un archivo fuente adquiere una nueva dependencia (por ejemplo, si el programador agrega una nueva directiva #include en un archivo fuente C ), entonces se introduce una discrepancia entre las dependencias reales y las que utiliza el sistema de compilación. A continuación, el programador debería volver a generar las dependencias, pero corre el riesgo de olvidarse de hacerlo.
En el caso general, automake genera dependencias a través del script depcomp incluido, que invocará al compilador de manera apropiada o recurrirá a makedepend . Sin embargo, si el compilador es una versión suficientemente reciente de gcc , automake insertará el código de generación de dependencias para llamar a gcc directamente.
Diseño
Automake está escrito en Perl y debe usarse con GNU Autoconf . [2] Automake contiene los siguientes comandos:
- local
- automake
aclocal , sin embargo, es un programa de propósito general que puede ser útil para los usuarios de autoconf. La colección de compiladores GNU , por ejemplo, usa un local aunque su archivo MAKE esté escrito a mano.
Al igual que Autoconf, Automake no es completamente compatible con versiones anteriores . Por ejemplo, un proyecto creado con automake 1.13 no necesariamente funcionará con automake 1.14. [7] Esto puede requerir que proyectos complejos incluyan múltiples versiones.
Ver también
Notas
- ^ Meyering, Jim (18 de noviembre de 2020). "automake-1.16.3 lanzado [estable]" (lista de correo). Proyecto GNU . Consultado el 27 de marzo de 2021 .
- ^ a b "Automake" . GNU . Fundación de Software Libre . 2018-02-25 . Consultado el 26 de febrero de 2018 .
- ^ Bibliotecas GTK +
- ^ Documentación de XCircuit
- ^ "Seguimiento automático de dependencias" . Automake Manual . GNU.org . Fundación de Software Libre .
- ^ "Historia de Automake" . GNU.org .
- ^ ¿ Automake "roto"?
Referencias
- Vaughan, Gary V .; Elliston, Ben; Tromey, Tom (2000). Gnu Autoconf, Automake y Libtool . Sams. ISBN 1-57870-190-2.
enlaces externos
- Página web oficial
- Versión en línea de The Goat Book también conocido como Autobook
- Manual combinado para Automake y Autoconf
- Página de inicio de Autotoolset