aclocal有什么意义?

时间:2009-12-28 18:49:23

标签: autotools m4

在使用autotools配置源文件的上下文中, aclocal 脚本和 aclocal.m4 文件有什么意义?从我读到的,aclocal扫描宏文件的宏以后由automake使用。我不深入理解这个过程,但似乎扫描功能可能刚刚嵌入到automake中。

3 个答案:

答案 0 :(得分:39)

请参阅Alexandre Duret Lutz's Autotools tutorial,必读。

它包含的图表说明了autotools项目的不同文件如何相互交互以及使用哪种工具:configureconfig.hconfig.statusaclocal.m4

编辑: John Calcote还在his book about Autotools的第一章中解释了aclocal和aclocal.m4的目的:Chapter 1: A brief introduction to the GNU Autotools

  

aclocal实用程序实际上是由GNU手册记录的,作为Autoconf缺乏灵活性的临时解决方法。 Autoconf首先被设计和编写,然后几年后,Automake的想法被设想为Autoconf的附加组件。但Autoconf实际上并非设计为可按Automake所要求的规模扩展。

...

  

本质上,aclocal的工作是通过合并安装的Autotool包和用户指定位置的各种宏文件来创建aclocal.m4文件,这样Autoconf就可以在一个地方找到它们。

...

  

然而,来自两组工具的最新文档表明整个aclocal / acinclude范例现在已经过时,支持更新的指定包含m4宏文件的目录的方法。目前的建议是在项目目录中创建一个名为m4的目录(acinclude似乎更适合此作者),并以单个.m4文件的形式将宏添加到此目录中。在Autoconf处理您的configure.ac文件之前,此目录中的所有文件将被收集到aclocal.m4中。最终,aclocal将被Autoconf本身的功能所取代。

答案 1 :(得分:9)

在我的软件中,aclocal.m4收集我在软件构建过程中使用的各种非标准Autoconf宏。一组这样的宏处理亚秒级时间 - 选择最佳可用选项(根据一些预先确定的“最佳”标准);另一组这样的宏处理IBM Informix ESQL / C编译系统的复杂性,因为它在过去二十年中不断发展(它处理ESQL / C 5.20,版本5.00于1990年发布,它还处理最新版本IBM Informix ClientSDK 3.50 - 尽管它在2008年发布,但令我非常懊恼,它包含ESQL / C 3.50。)

因此,aclocal.m4适用于本地宏,它们不一定是常规Autoconf的一部分,但是由您的特定软件使用。

答案 2 :(得分:0)

http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/给出的John Calcote文章的链接。我会对这篇文章发表评论,但我的名声太低了。

基本段落:

本质上,aclocal的工作是通过合并安装的Autotool包和用户指定位置中的各种宏文件来创建aclocal.m4文件,这样Autoconf就可以在一个地方找到它们。

相关问题