2009-12-28 22 views
33

¿Cuál es el objetivo de aclocal script y aclocal.m4 archivo, en el contexto de utilizar autotools para configurar archivos de origen? 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.¿Cuál es el punto de aclocal?

+0

@WilliamPursell, ¿puedes explicar las etiquetas "m4sh" y "m4sugar", por favor? ¿Qué son y cómo se aplican a esta pregunta, cuando no se mencionan en ninguna parte de la pregunta o las respuestas? – Charles

+0

@Charles autoconf no usa directamente m4, sino que usa los contenedores 'm4sh' y' m4sugar'. El objetivo de aclocal es hacer que las macros m4sh y m4sugar estén disponibles para autoconf. –

+0

@WilliamPursell, el problema aquí es que la pregunta no es sobre 'm4sh' o' m4sugar', sino sobre 'aclocal' y autotools en general. No veo nada aquí, o en la otra pregunta que etiquetó con esas dos etiquetas, que realmente hace que las etiquetas sean relevantes para la pregunta. – Charles

Respuesta

36

Consulte Alexandre Duret Lutz's Autotools tutorial, una lectura obligatoria.

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

EDIT: John Calcote también explica el propósito de aclocal.m4 aclocal y en el primer capítulo de his book about Autotools: Chapter 1: A brief introduction to the GNU Autotools:

la utilidad aclocal es en realidad documentada por los manuales de GNU como temporal trabajo en torno a una cierta falta de flexibilidad en Autocon F. 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.

...

En esencia, el trabajo de aclocal es crear un archivo aclocal.m4 mediante la consolidación de diversos archivos de macros de los paquetes instalados AutoTool y lugares especificados por el usuario, de manera que Autoconf puede encontrar todos ellos en un lugar.

...

Sin embargo, la documentación más reciente de los dos conjuntos de herramientas sugiere que todo el paradigma aclocal/acinclude ya está obsoleta, a favor de un nuevo método de especificar un directorio que contiene macros m4 archivos. 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.

+2

Entonces, ¿'Acclocal' ha sido reemplazado por la funcionalidad Autoconf? –

8

En mi software, aclocal.m4 recoge las diversas macros Autoconf no estándar que utilizo durante las versiones 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).

Por lo tanto, aclocal.m4 es para macros locales que no son necesariamente parte de Autoconf regular pero que son utilizadas por su software específico.

+7

+1, eso es exactamente para lo que es. Mucha gente simplemente deja caer esos bits en configure.ac/configure.in que se sabe que causa locura, ceguera e incluso síndrome de tourette para los mantenedores de distribución. –

0

El enlace al artículo de John Calcote dado 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 punto esencial:

En esencia, el trabajo de aclocal es crear un archivo aclocal.m4 mediante la consolidación de diversos archivos de macros de los paquetes instalados AutoTool y lugares especificados por el usuario, de manera que Autoconf puede encontrar todos ellos en un solo lugar.

+0

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/18762464) – jfeferman