autotools入门笔记(一)

GNU autotools作用:收集系统配置信息并自动生成Makefile文件。

GNU autotools主要包括三个工具:autoconf、automake、libtool,还有很多辅助的工具,包括:autoheader、aclocal、autoscan。

● autoscan检测源文件生成configure.scan;

● autoconf根据configure.in(或者configure.ac)生成configure;

● automake根据Makefile.am 生成Makefile.in。

这几个工具及中间生成的文件的关系图如图1所示:

 autotools入门笔记(一)

图1


Ubuntu下安装:

sudo apt-get install autoconf

sudo apt-get install automake

 

下面以test工程为例,工程跟目录为test,只有一个源文件main.c。构建的主要步骤如下,其中最主要的步骤是(2)和(6):

(1)运行autoscan检测源文件生成configure.scan,将其修改成configure.in

(2)编辑configure.in

          a.修改AC_INIT(FULL-PACKAGE-NAME,VERSION, BUG-REPORT-ADDRESS),FULL-PACKAGE-NAME为程序名称,VERSION为当前版本,BUG-REPORT-ADDRESS为bug汇报地址。例如:AC_INIT(main,0.0.1, [email protected]);

          b. 随后增加一行:AM_INIT_AUTOMAKE(test, 0.0.1);

          c. 在AC_OUTPUT前增加一行:AC_CONFIG_FILES([Makefile])

          (文件configure.in完整内容如图2所示)

autotools入门笔记(一)

图2

(3)运行aclocal生成aclocal.m4

(4)运行autoconf生成configure脚本

(5)运行autoheader生成config.h.in文件

(6)创建并编辑Makefile.am

       AUTOMAKE_OPTIONS=foreign

       #automake提供了三种软件等级:foreign、gnu和gnits,默认等级为gnu,(会检测NEWS、README、AUTHORS和ChangeLog文件)。

       #在本例使用foreign等级,它只检测必须的文件。

       bin_PROGRAMS=main

       #定义要产生的可执行文件名,如果要产生多个执行文件,每个文件名用空格隔开。

       main_SOURCES=main.c

       #指定用来生成目标的源文件列表

      (文件Makefile.am完整内容如图3所示)


图3

(7)运行automake --add-missing生成makefile.in

(8)运行configure脚本生成Makefile

至此,构建完毕,运行make命令可以完成编译过程生成可执行文件main。


 

你可能感兴趣的:(tools)