使用autotools自动生成Makefile.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:7 大小:43KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

使用autotools自动生成Makefile.doc

使用autotools自动生成Makefile.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

使用autotools建立Makefile龚名茂整理2009.8.22对于一个较大的项目而言,完全手动建立Makefile是一件费力而又容易出错的工作。autotools系列工具只需用户输入简单的目标文件、依赖文件、文件目录等就可以比较轻松地生成Makefile了。现在Linux上的软件开发一般都是用autotools来制作Makefile。Autotools是一系列的工具,主要有:aclocal、autoscan、autoconf、autoheader、automake。使用autotools主要就是利用各个工具的脚本文件来生成最后的Makefile。下面结合实例来介绍具体的流程。注意:使用本工具前必须进入到要生成Makefile文件的目录下!第一步autoscan在使用autoscan工具之前可以使用tree命令查看当前文件夹下面的文件结构,然后使用autoscan在给定目录及其子目录树中检查源文件,如果没有给出目录,就在当前目录及其子目录树中进行检查。最终生成两个文件:configure.scan、autoscan.log。[armlinux@lqmautotools-easy]$tree.|--main.c|--mytool1.c|--mytool1.h|--mytool2.c`--mytool2.h0directories,5files[armlinux@lqmautotools-easy]$autoscan[armlinux@lqmautotools-easy]$tree.|--autoscan.log|--configure.scan|--main.c|--mytool1.c|--mytool1.h|--mytool2.c`--mytool2.h0directories,7files再次使用tree命令查看当前目录下的文件结构,可见已经生成了autoscan.log、configure.scan两个文件,其中,configure.scan是configure.in的原型文件。而configure.in是autoconf的脚本配置文件。所以下一步的工作就是要对configure.scan进行修改,将其转化为configure.in。第二步autoconf使用vi编辑器打开configure.scan文件,内容如下:#-*-Autoconf-*-#Processthisfilewithautoconftoproduceaconfigurescript.AC_PREREQ(2.57)AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)AC_CONFIG_SRCDIR([main.c])AC_CONFIG_HEADER([config.h])#Checksforprograms.AC_PROG_CC#Checksforlibraries.#Checksforheaderfiles.#Checksfortypedefs,structures,andcompilercharacteristics.#Checksforlibraryfunctions.AC_OUTPUT下面对这个脚本进行注释:1、以“#”号开始的是行为注释。2、AC_PREREQ宏声明本文件要求的autoconf版本。3、AC_INIT宏用来定义软件的名称和版本等信息,这里的BUG-REPORT-ADDRESS可以省略。因此需要修改这个宏中的前两个参数,第一个参数修改为自己main函数所在的文件的名称(如hello),第二个参数为版本号,可以自行定义(如1.0)。4、AC_CONFIG_SRCDIR宏用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。这个参数一般不需要修改。5、AC_CONFIG_HEADER宏用于生成config.h文件,以便autoheader使用。修改时需要增加一个宏AM_INIT_AUTOMAKE(PACKAGE,VERSION),还要把AC_CONFIG_HEADER更改为AM_CONFIG_HEADER。具体如下:#-*-Autoconf-*-#Processthisfilewithautoconftoproduceaconfigurescript.AC_PREREQ(2.57)#AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)AC_INIT(main,1.0)AM_INIT_AUTOMAKE(main,1.0)AC_CONFIG_SRCDIR([main.c])AM_CONFIG_HEADER(