autotools m4

autotools - ¿Cuál es el punto de aclocal?



m4 (3)

¿De qué sirve el script aclocal y el archivo aclocal.m4 , en el contexto del uso de autotools para configurar los archivos fuente? Por lo que leí, aclocal escanea archivos de macros para macros que luego usa automake. No entiendo este proceso en profundidad, pero parece que la funcionalidad de escaneo podría haberse incorporado en automake.


El enlace al artículo de John Calcote proporcionado por http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/ . Hubiera comentado sobre esa publicación, pero mi reputación aquí es muy baja.

El párrafo esencial:

Básicamente, el trabajo de aclocal es crear un archivo aclocal.m4 consolidando varios archivos de macro de paquetes Autotool instalados y ubicaciones especificadas por el usuario, de modo que Autoconf pueda encontrarlos en un solo lugar.


En mi software, aclocal.m4 recopila las diversas macros Autoconf no estándar que utilizo durante las compilaciones de mi software. Un conjunto de macros de este tipo se ocupa de la temporización en segundos: elegir la mejor de las opciones disponibles (de acuerdo con un criterio predeterminado para determinar qué es "mejor"); otro conjunto de macros se ocupa de las complejidades del sistema de compilación ESQL / C de IBM Informix a medida que evolucionó en las últimas dos décadas (maneja ESQL / C 5.20, donde se lanzó la versión 5.00 en 1990, y también maneja las últimas versiones) de IBM Informix ClientSDK 3.50 - que, muy a mi pesar, contiene ESQL / C 3.50 a pesar de que fue lanzado en 2008).

Entonces, aclocal.m4 es para macros locales que no son necesariamente parte de Autoconf regular pero que son usadas por su software específico.


Vea el tutorial de Autotools de Alexandre Duret Lutz , una lectura obligada.

Contiene diagramas que explican cómo los diferentes archivos de un proyecto autotools interactúan entre sí y mediante qué herramienta se utilizan: configure , config.h , config.status , aclocal.m4 etc.

EDITAR: John Calcote también explica el propósito de aclocal y aclocal.m4 en el primer capítulo de su libro sobre Autotools : Capítulo 1: Una breve introducción a las Autotools de GNU :

La utilidad local está documentada en los manuales de GNU como una solución temporal para una cierta falta de flexibilidad en Autoconf. Autoconf fue diseñado y escrito primero, y luego unos años más tarde, la idea de Automake fue concebida como un complemento para Autoconf. Pero Autoconf realmente no fue diseñado para ser extensible en la escala requerida por Automake.

...

Básicamente, el trabajo de aclocal es crear un archivo aclocal.m4 consolidando varios archivos de macro de paquetes Autotool instalados y ubicaciones especificadas por el usuario, de modo que Autoconf pueda encontrarlos en un solo lugar.

...

Sin embargo, la última documentación de ambos conjuntos de herramientas sugiere que todo el paradigma aclocal / acinclude ahora está obsoleto, a favor de un método más nuevo para especificar un directorio que contenga archivos de macros m4. La recomendación actual es que cree un directorio en su directorio de proyecto llamado simplemente m4 (el acinclude parece más apropiado para este autor), y agregue macros en forma de archivos .m4 individuales a este directorio. Todos los archivos en este directorio se reunirán en aclocal.m4 antes de que Autoconf procese su archivo configure.ac. En última instancia, Aclocal será reemplazado por la funcionalidad en Autoconf.