使用autotools工具搭建工程

 

使用autotools搭建自动编译工程

简介

autotoolsautoscan,autoheader,autoconf,automake,aclocal工具的集合

首先使用aclocal生成一个“aclocal.m4”文件,该文件主要处理本地的宏定义;

改写“configure.scan”文件,并将其重命名为“configure.in”,并使用autoconf文件生成configure文件。接着在每个目录下创建一个Makefile.am文件,用来描述当前目录以及子目录的文件结构关系


第一步

autoscan

会在当前目录及其子目录树中检查源文件,以寻找一般的移植性问题并创建一个文件“configure.scan,该文件就是接下来autoconf要用到的“configure.in原型。如下所示:

# -*- Autoconf -*-

# AC_PREREQ宏声明本文件要求的autoconf版本

AC_PREREQ(2.61)

#用来定义软件的名称和版本等信息,BUG-REPORT-ADDRESS一般为作者的e-maiL

#指定项目的一个源文件

#AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)

AC_INIT(src/MiniDesktop.py)

#AM_INIT_AUTOMAKE(PACKAGE,VERSION)是另加的,是automake所必备的宏,PACKAGE是所要产生软件的名称,VERSION是版本编号

#指定项目名称和版本号(这些参数成为config.h中定义的PACKAGEVERSION值)

AM_INIT_AUTOMAKE(minidesktop,1.1)

AM_MAINTAINER_MODE关闭缺省时仅供程序维护者使用的makefile目标,并修改以使configure能理解--enable-maintainer-mode选项。--enable-maintainer-modemaintaineronly目标重新打开

AM_MAINTAINER_MODE



#dnl也为注释

dnl AC_PATH_PROG(GCONFTOOL, gconftool-2)

dnl AM_GCONF_SOURCE_2

dnl AC_PROG_INTTOOL([0.21])

dnl check for python



#检查python解析器

AM_PATH_PYTHON ([VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])

AM_PATH_PYTHON [2.5])

#PKG_CHECK_MODULES(NAME, lib >= version ..., action-if, action-not)

#查找库有没有安装及版本

PKG_CHECK_MODULES(PYGTK, pygtk-2.0)

#AC_SUBST输出一个变量到由configure生成的config.status文件中(整个工程可见)

AC_SUBST(PYGTK_CFLAGS)

AC_SUBST(PYGTK_LIBS)

#AC_CONFIG_FILES([Makefile

# src/Makefile])

#表明输出的Makefile文件的路径

AC_OUTPUT([ Makefile

src/Makefile

...

])

2(aclocal)

aclocal生成一个“aclocal.m4”文件,该文件主要处理本地的宏定义



3步(autoconf

autoconf命令生成configure脚本文件



4(autoheader)

autoheader命令,它负责生成config.h.in文件。该工具通常会从“acconfig.h文件中复制用户附加的符号定义,因此此处没有附加符号定义,所以不需要创建“acconfig.h文件



5(automake)

automake要用的脚本配置文件是Makefile.am,用户需要自己在每个目录创建。之后,automake工具把Makefile.am转换成Makefile.in

Makefile.am原型:

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS= hello

hello_SOURCES= hello.c

解释

· AUTOMAKE_OPTIONS:为设置automake的选项。GNU对自己发布的软件有严格的规范,比如必须附带许可证声明文件COPYING等,否则automake执行时会报错。automake提供了三种软件等级:foreigngnugnits,让用户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件。

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

· hello_SOURCES定义“hello这个执行程序所需要的源代码文件。把所用到的所有文件都列出来,并用空格隔开。例如:若目标体“hello需要“hello.c、“sunq.c、“hello.h三个依赖文件,则定义hello_SOURCES=hello.c sunq.c hello.h。要注意的是,如果要定义多个执行文件,则对每个执行程序都要定义相应的file_SOURCES



最后执行./configure脚本,自动生成Makefile文件





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值