Articulo de referencia

Autoconf

GNU Autoconf es una herramienta de desarrollo de software que genera un script de configuración que, a su vez, genera archivos para compilar el código fuente y para empaquetar o...

GNU Autoconf es una herramienta de desarrollo de software que genera un script de configuración que, a su vez, genera archivos para compilar el código fuente y para empaquetar o instalar los archivos resultantes . Autoconf forma parte del Sistema de Compilación de GNU , junto con Automake , Libtool , Autoheader y otras herramientas.

Autoconf es independiente del lenguaje de programación del código fuente que se va a compilar. No obstante, se utiliza principalmente con C , C++ , Fortran , Erlang u Objective-C .

Un script de configuración configura un paquete de software para su instalación en un sistema de destino específico. Tras ejecutar una serie de pruebas en dicho sistema, el script genera archivos de cabecera y un archivo makefile a partir de plantillas, personalizando así el paquete de software para el sistema de destino.

Descripción general del uso

Diagrama de flujo de Autoconf y Automake . Nótese que "configure.ac" se llamaba "configure.in" en las primeras versiones de Autoconf.

El desarrollador especifica el comportamiento deseado del script de configuración escribiendo una lista de instrucciones en el lenguaje GNU m4 en un archivo llamado "configure.ac". Existe una biblioteca de macros m4 predefinidas para describir las instrucciones comunes del script de configuración. Autoconf transforma las instrucciones de "configure.ac" en un script de configuración portable. El sistema que realizará la compilación no necesita tener Autoconf instalado: Autoconf solo es necesario para compilar el script de configuración, que generalmente se distribuye con el software.

Historia

Autoconf fue creado en el verano de 1991 por David Mackenzie para apoyar su trabajo en la Free Software Foundation . En los años siguientes, creció hasta incluir mejoras de diversos autores y se convirtió en el sistema de configuración de compilación más utilizado para escribir software libre o de código abierto portátil .

Acercarse

Autoconf es similar al paquete Metaconfig utilizado por Perl . El sistema imake, utilizado anteriormente por el Sistema X Window (hasta X11R6.9), está estrechamente relacionado, pero tiene una filosofía diferente.

El enfoque de Autoconf para la portabilidad consiste en probar las características , no las versiones . Por ejemplo, el compilador C nativo de SunOS 4 no era compatible con ISO C. Sin embargo, es posible que el usuario o el administrador hayan instalado un compilador compatible con ISO C. Un enfoque basado únicamente en versiones no detectaría la presencia del compilador ISO C, pero un enfoque de prueba de características sí podría descubrir el compilador ISO C que el usuario ha instalado. La razón de este enfoque es obtener las siguientes ventajas:

  • El script de configuración puede obtener resultados razonables en sistemas más nuevos o desconocidos.
  • Permite a los administradores personalizar sus máquinas y que el script de configuración aproveche dichas personalizaciones.
  • No es necesario llevar un registro de los detalles minuciosos de las versiones, los números de parche, etc., para determinar si una característica en particular es compatible o no.

Autoconf proporciona una amplia documentación sobre la falta de portabilidad de muchas construcciones de shell POSIX a shells más antiguos y los errores que contienen. También proporciona M4SH, un reemplazo basado en macros para la sintaxis de shell. [ 2 ]

Comportamiento

Autoconf genera un configurescript a partir del contenido de un configure.acarchivo que caracteriza un conjunto específico de código fuente. configureAl ejecutarse, el script analiza el entorno de compilación y genera un config.statusscript secundario que, a su vez, convierte otros archivos de entrada (generalmente Makefile.inen archivos de salida Makefile) adecuados para dicho entorno. Finalmente, el makeprograma utiliza Makefilepara generar programas ejecutables a partir del código fuente.

La complejidad de Autotools refleja la variedad de circunstancias en las que se puede construir un conjunto de código fuente.

  • Si se modifica un archivo de código fuente, basta con volver a ejecutarlo make, lo que solo recompila la parte del código fuente afectada por el cambio.
  • Si un .inarchivo ha cambiado, basta con volver a ejecutarlo config.statusy make.
  • Si el código fuente se copia a otro ordenador, basta con volver a ejecutar configure(que ejecuta config.status) y make. (Por este motivo, el código fuente que utiliza Autotools normalmente se distribuye sin los archivos que configuregenera).
  • Si el código fuente se modifica de forma más fundamental, entonces es necesario modificar configure.aclos archivos y seguir todos los pasos subsiguientes..in

Para procesar archivos, autoconf utiliza la implementación GNU del sistema de macros m4 .

Autoconf viene con varios programas auxiliares como autoheader, que se utiliza para ayudar a administrar los archivos de encabezado de C ; , que puede crear un archivo de entrada inicial para Autoconf; y , que puede listar los identificadores del preprocesador de C utilizados en el programa.autoscanifnames

Crítica

Existen algunas críticas que señalan que Autoconf utiliza tecnologías obsoletas, tiene muchas restricciones heredadas y complica innecesariamente escenarios sencillos para el autor de los scripts configure.ac . En particular, los puntos débiles de Autoconf que se citan con frecuencia son:

  • Complejidad general de la arquitectura utilizada, la mayoría de los proyectos utilizan múltiples repeticiones. [ 3 ] [ 4 ]
  • Algunas personas piensan que los scripts de configuración generados por Autoconf solo proporcionan una interfaz de línea de comandos manual sin ninguna estandarización. [ 5 ] Si bien es cierto que algunos desarrolladores no respetan las convenciones comunes, dichas convenciones existen y se utilizan ampliamente. [ 6 ]
  • m4 es inusual y desconocido para muchos desarrolladores. Los desarrolladores deberán aprenderlo para extender Autoconf con comprobaciones no estándar. [ 5 ] [ 7 ]
  • La débil compatibilidad hacia atrás y hacia adelante requiere un script de envoltura. [ 8 ]
  • Los scripts generados por Autoconf suelen ser extensos y bastante complejos. Si bien generan registros detallados, depurarlos puede resultar difícil.

Debido a estas limitaciones, varios proyectos que utilizaban GNU Build System cambiaron a otros sistemas de compilación, como CMake y SCons . [ 3 ] [ 9 ]

Véase también

  • CMake : herramienta de compilación multiplataforma para configurar compilaciones específicas de cada plataforma. 
  • Meson – Herramienta de automatización de compilación 
  • pkg-config : herramienta de desarrollo de software para consultar información sobre dependencias de bibliotecas. 

Referencias

  1. Zachary Weinberg (20 de marzo de 2026). "autoconf-2.73 lanzado [ estable ] " . Consultado el 20 de marzo de 2026 .
  2. "Carcasa portátil" . Autoconf . Consultado el 20 de enero de 2020 .
  3. 1 2 Neundorf, Alexander (2006-06-21). "Por qué el proyecto KDE cambió a CMake y cómo" .
  4. Kamp, Poul-Henning (15 de agosto de 2012). "Una generación perdida en el bazar" . ACM Queue . 10 (8): 20– 23. doi : 10.1145/2346916.2349257 . S2CID 11656592 . 
  5. 1 2 McCall, Andrew (21/06/2003). "¡Basta de la locura de autoconf! Por qué necesitamos un nuevo sistema de compilación" . Archivado del original el 07/07/2009.
  6. "Estándares de codificación GNU" .
  7. Kamp, Poul-Henning (2010-04-20). "¿Los llamaste herramientas de chatarra automática ?" . Archivado del original el 11-09-2017 . Recuperado el 16-08-2017 .
  8. Dickey, Thomas. "Por qué sigo usando autoconf 2.13" .
  9. "Blender.org - Sistemas de compilación" . Archivado del original el 2 de diciembre de 2008. Consultado el 10 de junio de 2009 .
  • Sitio web oficialEdita esto en Wikidata
  • Archivo de macros GNU Autoconf
  • La página principal de The Goat Book (también conocida como Autobook) se archivó el 20 de diciembre de 2010 en la Wayback Machine.
  • Uso de Automake y Autoconf con C++
  • Uso de bibliotecas C/C++ con Automake y Autoconf .
  • Página principal de Autotoolset
  • Autotools: Una guía práctica para Autoconf, Automake y Libtool.
  • Mitos de Autotools