摘要: automake有很多内置的变量名,列出如下:xx__SOURCESnodist_xxx_SOURCESdist_xxx_SOURCESxxx_ARxxx_LIBADDxxx_LDADDxxx_LDFLAGSxxx_LIBTOOLFLAGSxxx_DEPENDENCIESxxx_LINKxxx_CCASFLAGSxxx_CFLAGSxxx_CPPFLAGSxxx_CXXFLAGSxxx_FFLAGSxxx_GCJFLAGSxxx_LFLAGSxxx_OBJCFLAGSxxx_OBJCXXFLAGSxxx_RFLAGSxxx_UPCFLAGSxxx_YFLAGSxxx_SHORTNAME 阅读全文
posted @ 2013-04-21 19:19 日月王 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 我们的程序也没有使用到动态库,动态库的支持相对于静态库,要复杂许多,动态库与静态库在一些变量名字上有不同,比如LTLIBRARIES/通常,我们是使用libtool来创建动态库,在automake中使用libtool创建动态库时,使用的扩展名并不是so,而是la比如我们声明创建一个动态库: lib_LTLIBRARIES = libgettext.la libgettext_la_SOURCES = gettext.c gettext.h ...automake预定义了pkglibdir变量,因此可以使用pkglib_LTLIBRARIES将之安装在$(libdir)/@PAC... 阅读全文
posted @ 2013-04-21 19:13 日月王 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 目前我们的程序没有使用到静态库,对于静态库:1.目标应使用xx_LIBRARIES说明,2.lib_LIBRARIES会安装的/usr/lib目录下3.pkglib_LIBRARIES会安装在/usr/XXX/lib目录下4.noinst_LIBRARIES将不会被安装,只是是编译链接过来中使用到ps:对于编译过程中生成的可执行程序,不希望安装时,也可以使用noinst_PROGRAMS比如,创建一个静态库,但不希望安装,同时指定其编译的源文件:noinst_LIBRARIES = libcpio.alibcpio_a_SOURCES = xxx yyy zzz这里涉及到一个automake的 阅读全文
posted @ 2013-04-21 19:02 日月王 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 我们的程序目前不涉及自己创建静态、动态库,因此没有使用libtool如果想要使用,在configure.ac中增加一行AM_PROG_LIBTOOL即可 阅读全文
posted @ 2013-04-21 18:55 日月王 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 我们目前用的autogen.sh是很简陋的,没有测试系统中是否包含要用到的工具正式的autogen.sh如下:#! /bin/sh # Allow invocation from a separate build directory; in that case, we change# to the source directory to run the auto*, then change back before running configuresrcdir=`dirname $0`test -z "$srcdir" && srcdir=. ORIGDIR 阅读全文
posted @ 2013-04-21 18:41 日月王 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 生成desktop文件方法很多,有使用.desktop.in.in方式的,也有直接放一个.desktop文件方式的其实两者差别不大,因为对于我们来说,一个工程的.desktop基本上确定的。比如使用.desktop.in.in方式,我们在根目录下面创建一个data目录,将.desktop.in.in文件及Makefile.am文件放入其中[Desktop Entry]_Name=Lunar Calendar_Name[zh_CN]=中国农历_GenericName=Lunar CalendarTryExec=@PACKAGE@Exec=@PACKAGE@Icon=pixmaps/@PACKAG 阅读全文
posted @ 2013-04-21 18:36 日月王 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 处理gettext与多国语言,我们先需要在configure.ac中增加一个AM_GNU_GETTEXT宏,如下# Checks for programs.AC_PROG_CXXAC_PROG_CCAC_PROG_MAKE_SETAM_GNU_GETTEXT([external])定义了external就不需要在当前目录下面有intl目录了,当然intl目录也是可以通过AM_GNU_GETTEXT_INTL_SUBDIR来指定另外名称的然后我们执行gettextize生成config.rpath以及po/m4目录下面的文件。同时会往configure.ac的AC_CONFIG_FILES中增加 阅读全文
posted @ 2013-04-21 03:22 日月王 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 下面我们开始修改Makefile.am文件,这个文件提供给automake程序,扫描产生Makefile.in文件用的当前根目录下面,glade-2生成的Makefile.am内容如下:## Process this file with automake to produce Makefile.inSUBDIRS = src poEXTRA_DIST = \ autogen.sh \ lunarcalendar.glade \ lunarcalendar.gladepinstall-data-local: @$(NORMAL_INSTALL) if test -d... 阅读全文
posted @ 2013-04-21 01:59 日月王 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 在完成代码之后,我们开始尝试准备编译环境glade-2在生成代码时,为我们考虑好了,自动生成了configure.in及autogen.sh。依道理来说,只要稍做修改,我们就可以编译/链接再运行了。但由于glade-2早在2007年就停止开发了,所以还得我们自己来动手。这里面要用到的就是一系列工具:autoconf/automake/intltool等等。现在的autoconf认的是configure.ac文件了。这个文件需要通过扫描代码重新生成,运行autoscan即可。生成的autoscan.log是日志信息,删除即可生成的configure.scan就是我们要的东西,基于这个文件基础之上 阅读全文
posted @ 2013-04-21 00:54 日月王 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.cnblogs.com/crazyhack/archive/2011/12/17/2291410.html為了駕馭GNU Autotools這頭猛獸,我們先來驗明它的真身:圖中橢圓形狀的就是gnu autotools里的主要工具了,包括1autoscan2aclocal3autoheader4automake5autoconf等.而方形形狀只有Makefile.am和configure.ac是需要我們寫的,别的方框里除了Makefile是最終的配置文件,其它都是中間文件。(Makefile文件是由6configure生成的)整體流程紀錄如下: 0.添加sr... 阅读全文
posted @ 2013-04-20 19:59 日月王 阅读(222) 评论(0) 推荐(0) 编辑