文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Using Automake and Autoconf to manage large projec

Using Automake and Autoconf to manage large projec

时间:2009-06-17  来源:admin126com

I. Hello world!  
a. 建立源码树

proj
|---- NEWS |---- README |---- AUTHORS |---- ChangeLog |---- src ----------------> 源码目录 | |---- Makefile.am | `---- hello.c | |---- Makefile.am `---- configure.ac     b. 撰写 proj/configure.ac
Autoconf 据此生成configure脚本。

基本功能的configure.ac应包括以下的宏:

AC_INIT(Full-Package-Name, Version, Bug-Report-Address)
AM_INIT_AUTOMAKE # 初始化 AM_CONFIG_HEADER(config.h)  #生成项目的配置头文件 #如:项目支持国际化,则其中会定义ENABLE_NLS 为1 AC_PROG_CC # 检查C编译器 AC_PROG_CXX # 检查C++编译器 AC_PROG_INSTALL # 检查install 工具  
AC_CONFIG_FILES([Makefile po/Makefile]) # 要输出的Makefile
AC_OUTPUT
也可以在源码根目录下执行autoscan,自动分析,写入您可能需要的宏到
configure.scan中,修改之,并改名为configure.ac即可。     c. 撰写 proj/Makefile.am  
此为顶层 Makefile.am, 仅需告诉Automake,哪些目录需要Automake 去处理:
SUBDIRS = src  
哪些文件需要发布,但无须编译:

EXTRA_DIST = README ChangLog
      d. 在 proj 下建立 GNU-Style 项目所要求的文件  
touch NEWS README AUTHORS ChangLog

如不想使用GNU-Style,可在proj/Makefile.am 中指定:
 
AUTOMAKE_OPTIONS = foreign

否则automake会报错。
 
e. 为每个子目录撰写Makefile.am

src子目录下是为构建hello程序的源码,则其下Makefile.am中写入:

bin_PROGRAMES = hello
hello_SOURCES = hello.c  
如果要链接库,可加入:
 
hello_LDADD = -ldl -lpthread
      f. 完整的build步骤  
aclocal -I. ------------> 生成aclocal.m4
autoheader -f ------------> 生成config.h.in automake -a -c -f ------------> 从makefile.am生成Makefile.in autoconf ------------> 从configure.ac生成configure ./configure ------------> 从Makefile.in生成Makefile make       II. 开发中常用的Autoconf 宏  
AC_INIT(Full-Package-Name, Version, Bug-Report-Address)
 
AM_INIT_AUTOMAKE
 
AM_CONFIG_HEADER(config.h)  #生成项目的配置头文件
#如项目支持国际化,则其中会定义ENABLE_NLS 为1  
AC_CONFIG_SRCDIR([src/hello.c])
 
AC_PROG_CC
AC_PROG_CXX AC_PROG_INSTALL  
AC_PROG_MAKE_SET
 
# 构建动态共享库支持
AC_PROG_LIBTOOL AC_PROG_RANLIB  
# 国际化支持
AC_PROG_INTLTOOL([Intltoolize_Version]) ALL_LINGUAS=”” AM_GLIB_GNU_GETTEXT #使用GLib库的gettext机制 AM_GNU_GETTEXT #使用Libc库的gettext机制  
AC_CONFIG_FILES([Makefile po/Makefile])
AC_OUTPUT       III. 开发中常用的Automake变量  
# 通用变量
_SOURCES = noinst_HEADERS = INCLUDES = _CFLAGS = _CPPFLAGS = _CXXFLAGS = _LDFLAGS = # 没有libtool时,是否可用?  
# 构建可执行程序
bin_PROGRAMS = _LDADD =  
# 构建静态库
bin_LIBRARIES = libhello.a libhello_a_LIBADD =  
# 构建动态库
lib_LTLIBRARIES = libhello.la libhello_la_LIBADD = -rpath ./        
IV. 参考源码树
 
proj
|---- NEWS |---- README |---- AUTHORS |---- ChangeLog |---- doc ----------------> 文档目录 |---- test ----------------> 测试代码目录 |---- src ----------------> 源码目录 |---- po ----------------> 国际化文件目录 |---- res ----------------> 资源目录 |---- glade ----------------> glade文件 `---- image ----------------> 图像文件   本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/comcat/archive/2007/04/11/1560161.aspx
相关阅读 更多 +
排行榜 更多 +
空中跑酷汉化版

空中跑酷汉化版

赛车竞速 下载
修仙传说

修仙传说

角色扮演 下载
魔界零之迷宫

魔界零之迷宫

冒险解谜 下载