GNU Autoconf es una herramienta para producir scripts de configuración para construir, instalar y empaquetar software en sistemas informáticos donde está disponible un shell Bourne .
Autor (es) original (es) | David Mackenzie |
---|---|
Desarrollador (es) | El proyecto GNU |
Versión inicial | 1991 |
Lanzamiento estable | 2.71 / 28 de enero de 2021 [1] |
Repositorio | |
Escrito en | Perl |
Sistema operativo | Multiplataforma |
Tipo | Herramienta de programación |
Licencia | GNU GPL |
Sitio web | www |
Autoconf es independiente de los lenguajes de programación utilizados, pero a menudo se utiliza para proyectos que utilizan C , C ++ , Fortran , Fortran 77, Erlang u Objective-C .
Un script de configuración configura un paquete de software para su instalación en un sistema de destino en particular. Después de ejecutar una serie de pruebas en el sistema de destino, el script de configuración genera archivos de encabezado y un archivo MAKE a partir de plantillas, personalizando así el paquete de software para el sistema de destino. Junto con Automake y Libtool , Autoconf forma el GNU Build System , que comprende varias otras herramientas, en particular Autoheader.
Resumen de uso
El desarrollador especifica el comportamiento deseado del script configure escribiendo una lista de instrucciones en el lenguaje GNU m4 en un archivo llamado "configure.ac". Se encuentra disponible una biblioteca de macros m4 predefinidas para describir instrucciones de script de configuración comunes. Autoconf transforma las instrucciones en "configure.ac" en un script de configuración portátil. El sistema que realizará la construcción no necesita tener instalado autoconf: autoconf solo es necesario para construir el script de configuración, que generalmente se envía con el software.
Historia
Autoconf fue iniciado en el verano de 1991 por David Mackenzie para apoyar su trabajo en la Free Software Foundation . En los años siguientes, creció para incluir mejoras de una variedad de autores y se convirtió en el sistema de configuración de compilación más utilizado para escribir software portátil gratuito o de código abierto .
Acercarse
Autoconf es similar al paquete Metaconfig utilizado por Perl . El sistema imake utilizado anteriormente por X Window System (hasta X11R6.9) está estrechamente relacionado, pero tiene una filosofía diferente.
El enfoque de Autoconf para la portabilidad es probar las características , no las versiones . Por ejemplo, el compilador nativo C en SunOS 4 no apoyó ISO C . Sin embargo, es posible que el usuario o administrador haya instalado un compilador compatible con ISO C. Un enfoque basado en la versión pura no detectaría la presencia del compilador ISO C, pero un enfoque de prueba de características podría descubrir el compilador ISO C que el usuario ha instalado. El fundamento de este enfoque es obtener las siguientes ventajas:
- el script de configuración puede obtener resultados razonables en sistemas nuevos o desconocidos
- permite a los administradores personalizar sus máquinas y hacer que el script de configuración aproveche las personalizaciones
- no es necesario realizar un seguimiento de los detalles minuciosos de las versiones, los números de parche, etc., para averiguar si una función en particular es compatible o no
Autoconf proporciona una amplia documentación sobre la no portabilidad de muchas construcciones de shell POSIX a shells más antiguos y sus errores. También proporciona M4SH, un reemplazo basado en macros para la sintaxis de shell. [2]
Crítica
Hay algunas críticas que afirman que Autoconf usa tecnologías obsoletas, tiene muchas restricciones heredadas y complica escenarios simples innecesariamente para el autor de los scripts configure.ac . En particular, los puntos débiles de Autoconf que se suelen citar son:
- Complejidad general de la arquitectura utilizada, la mayoría de los proyectos utilizan múltiples repeticiones. [3] [4]
- La 'configuración' generada se escribe en el shell Bourne y, por lo tanto, la generación de Makefile es lenta.
- Algunas personas piensan que los scripts de 'configuración' generados por autoconf proporcionan solo una interfaz de línea de comandos manejada manualmente sin ninguna estandarización. [5] Si bien es cierto que algunos desarrolladores no respetan las convenciones comunes, tales convenciones existen y se utilizan ampliamente. [6]
- M4 es inusual y desconocido para muchos desarrolladores. Los desarrolladores deberán aprender a extender autoconf con comprobaciones no estándar. [5] [7]
- La compatibilidad débil con versiones anteriores y posteriores requiere un script de envoltura. [8]
- Los scripts generados por Autoconf suelen ser grandes y bastante complejos. Aunque producen un registro extenso, depurarlos puede resultar complicado.
Debido a estas limitaciones, varios proyectos que usaban GNU Build System cambiaron a diferentes sistemas de construcción, como CMake y SCons . [3] [9]
Ver también
Referencias
- ^ "autoconf-2.71 lanzado [estable]" . Archivos de autoconf . Consultado el 29 de enero de 2021 .
- ^ "Carcasa portátil" . Autoconf . Consultado el 20 de enero de 2020 .
- ^ a b Neundorf, Alexander (21 de junio de 2006). "Por qué el proyecto KDE cambió a CMake - y cómo" .
- ^ Kamp, Poul-Henning (15 de agosto de 2012). "Una generación perdida en el bazar" . Cola de ACM . 10 (8): 20-23. doi : 10.1145 / 2346916.2349257 . S2CID 11656592 .
- ^ a b McCall, Andrew (21 de junio de 2003). "¡Detén la locura del autoconf! Por qué necesitamos un nuevo sistema de compilación" .
- ^ "Estándares de codificación GNU" .
- ^ Kamp, Poul-Henning (20 de abril de 2010). "¿Las llamaste herramientas de autocrapado ?" . Archivado desde el original el 11 de septiembre de 2017 . Consultado el 16 de agosto de 2017 .
- ^ Dickey, Thomas. "por qué sigo usando autoconf 2.13" .
- ^ "Copia archivada" . Archivado desde el original el 2 de diciembre de 2008 . Consultado el 10 de junio de 2009 .CS1 maint: copia archivada como título ( enlace )
enlaces externos
- Página web oficial
- Archivo de macros GNU Autoconf
- La página de inicio de Goat Book (también conocida como Autobook)
- Usando Automake y Autoconf con C ++
- Uso de bibliotecas C / C ++ con Automake y Autoconf .
- Página de inicio de Autotoolset
- Autotools: una guía para profesionales de Autoconf, Automake y Libtool
- Autotools Mythbuster