如何为GNU Autotools重新配置大型程序

时间:2009-02-01 10:09:01

标签: autotools autoconf automake

我有一个用C编写的相当大的程序。它跨越了几个文件,并进行了一些重组以尝试补偿平台问题。具体来说,我有不同的操作系统,体系结构和编译器的头文件,它们定义了用于处理事物的宏。例如,-v标志打印版本信息,包括构建它的编译器的名称,以及它构建的操作系统和体系结构。作为一个重要原因的例子,该程序可以创建一个C代码文件,如果你愿意,可以编译它 - 一个任务,它只是对系统调用构建的。

它还支持GNU Readline库(或BSD Editline库 - 同样的东西),如果它在你的系统上找到,以及没有所有良好的Readline功能是纯ANSI的等价物,如果你不拥有它。

最重要的是,我无法取出任何与平台相关的位,因为几个函数在很大程度上依赖于您拥有的OS /架构/编译器。我也希望为拥有它的人提供良好的功能。我希望人们使用标准./configuremakemake install界面下载并安装它。

目前我正在为configure使用一个令人遗憾的手工shell脚本,它从头开始创建Makefile,并根据您的OS /架构/编译器确定要包含哪些头文件。我想要一个更有效的方法,我想使用GNU Autotools的更标准的构建系统。这样我知道我所做的将在其他人的计算机上工作而无需在他们的计算机上进行测试。

我的问题,对于那些已经完成所有这些事情的人(谢谢!),是: 1)如何从自制的构建系统切换到GNU Autotools? 2)有哪些好的教程可以开始使用GNU Autotools? 3)我怎样才能使这个过程相对无痛?

2 个答案:

答案 0 :(得分:8)

首先,您可以在项目的根目录中运行 autoscan 。它将扫描项目树并生成 configure.scan ,同时尝试检测非便携式功能。然后将其重命名为 configure.ac ,相应地编辑它并编写 Makefile.am 文件。

我建议您在GNU autotools手册中查找此过程(尤其是 autoscan )以获取详细信息。它会减少您的工作量,但至少您不会从头开始创建这些文件。

答案 1 :(得分:1)

此链接是我在阅读此帖后搜索的内容。它回答了我关于如何创建./configure文件的问题。

The GNU Build System