我有一个用C编写的相当大的程序.它跨越了几个文件,并进行了一些重组以尝试补偿平台问题.具体来说,我有不同的操作系统,体系结构和编译器的头文件,它们定义了用于处理事物的宏.例如,该-v
标志打印版本信息,包括构建它的编译器的名称,以及它构建的操作系统和体系结构.作为一个重要原因的例子,该程序可以创建一个C代码文件,如果你愿意,可以编译它 - 一个任务,它只是简单地对它构建的任何编译器进行系统调用.
它还支持GNU Readline库(或BSD Editline库 - 同样的东西),如果它在您的系统上找到,以及没有所有良好的Readline功能,如果您没有它的纯ANSI.
最重要的是,我无法取出任何与平台相关的位,因为有些功能在很大程度上取决于您拥有的OS /架构/编译器.我也希望为拥有它的人提供良好的功能.我希望人们能下载和使用标准安装./configure
,make
和make install
接口.
目前我正在使用一个令人遗憾的手工shell脚本,configure
从头开始创建Makefile,并根据您的OS /架构/编译器确定要包含哪些头文件.我想要一个更有效的方法,我想使用GNU Autotools的更标准的构建系统.这样我知道我所做的将在其他人的计算机上工作,而无需在他们的计算机上进行测试.
我的问题是,对于那些已经搞砸了所有这些(谢谢!)的人,是:1)我如何从自制的构建系统转换到GNU Autotools?2)有哪些好的教程可以开始使用GNU Autotools?3)我怎样才能使这个过程相对无痛?
首先,您可以在项目的根目录中运行autoscan.它将扫描项目树并生成configure.scan,同时尝试检测非便携式功能.然后将其重命名为configure.ac,相应地编辑它并编写Makefile.am文件.
我建议您在GNU autotools手册中查找此过程(尤其是autoscan)以获取详细信息.它会减少您的工作量,但至少您不会从头开始创建这些文件.