46

在使用自动工具配置源文件的上下文中,aclocal脚本aclocal.m4文件有什么意义?根据我的阅读,aclocal 会扫描宏文件以查找 automake 稍后使用的宏。我不深入了解这个过程,但似乎扫描功能可能刚刚嵌入到 automake 中。

4

3 回答 3

44

请参阅Alexandre Duret Lutz 的 Autotools 教程,必读。

它包含解释 autotools 项目的不同文件如何相互交互以及使用它们的工具的图表:configureconfig.hconfig.statusaclocal.m4

编辑:John Calcote 还在他关于 Autotools 的书的第一章中解释了 aclocal 和 aclocal.m4 的用途:第 1 章: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 本身的功能所取代。

于 2009-12-28T19:39:41.417 回答
12

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

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

于 2009-12-28T19:43:11.283 回答
0

http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/给出的 John Calcote 文章的链接。我会评论那篇文章,但我在这里的声誉太低了。

关键段落:

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

于 2017-10-26T12:57:01.847 回答