使用autotools工具搭建工程

<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } PRE { font-family: "Bitstream Vera Sans Mono", monospace } --> </style>

使用autotools搭建自动编译工程

简介

autotools是autoscan,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是版本编号

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文件





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值