Moblin应用程序模板

为了使开发人员尽快着手工作并实现快速开发,我们创建了一个空白应用程序模板和一些脚本,以快速自定义项目并开始工作。

在试用Moblin应用程序模板之前,您需要在系统上安装所有必要组件(包括Clutter)。

下载Moblin应用程序模板
可以从以下网址获取最新的项目模板:
http://git.moblin.org/repos/users/jketreno/template.tgz

模板的使用方法非常简单。首先,下载、解压并解包template.tgz文档。

% wget http://git.moblin.org/repos/users/jketreno/template.tgz
% tar xf template.tgz

这个命令将创建template目录,您可以立即创建并测试输出:

% cd template
% export PREFIX=$(pkg-config --variable=prefix glib-2.0)
% ./autogen.sh --prefix=$PREFIX
% make

如果上一步成功,将创建可执行的src/template,使用以下命令运行模板程序:

% src/template

模板运行时将显示一个带有一个旋转按钮Exit的窗口,单击该按钮(或在键盘上按Escape键)将退出程序。

分解模板
模板项目的目的是提供一个最小项目示例,模板目录中包含以下内容:

% ls
-rw-r--r-- AUTHORS
-rwxr-xr-x autogen.sh
-rw-r--r-- ChangeLog
-rw-r--r-- configure.in
-rw-r--r-- COPYING
-rw-r--r-- INSTALL
-rw-r--r-- Makefile.am
-rw-r--r-- NEWS
-rw-r--r-- README
drwxr-xr-x src

文件AUTHORS、ChangeLog、COPYING、INSTALL、NEWS和README都是开源软件项目中包含的标准文件。检查它们的具体内容可以看到它们包含的信息类型。

文件autogen.sh是一个小型shell脚本,这个脚本调用autoconf实用工具创建必要的组件,以根据configure.in中的输入针对您使用的系统配置项目。关于autoconf的详细介绍超出了本指南的范围,您可以在autoconf project page找到关于autoconf的详细信息。

configure.in文件的相关内容如下所示:

...
PKG_PROG_PKG_CONFIG
PKG_CHECK_MODULES(TEMPLATE, clutter-0.8 >= 0.8.1
                            clutter-cairo-0.8 >= 0.8.1
                            glib-2.0)
AC_SUBST(TEMPLATE_CFLAGS)
AC_SUBST(TEMPLATE_LIBS)
...

以上内容告知autoconf使用PKG_PROG_PKG_CONFIG宏确保clutter、clutter-cairo和glib软件包都在平台上处于足够的层级。根据上述检查结果,创建带有相应构建标记的变量TEMPLATE_CFLAGS和TEMPLATE_LIBS来找到那些软件包。

模板项目的“真实”部分包含在src目录中:

% ls src
-rw-r--r-- main.c
-rw-r--r-- Makefile.am

Makefile.am包含输入到autoconf实用工具中的内容,该文件告知autoconf创建一个二进制文件,使用包含在src目录中的源文件和头文件,以及从configure.ac创建(通过上述TEMPLATE_CFLAGS和TEMPLATE_LIBS)的变量CFLAGS和LDFLAGS创建一个二进制文件template。

% cat Makefile.am
INCLUDES = @TEMPLATE_CFLAGS@

bin_PROGRAMS = template

template_SOURCES = *.c *.h
template_LDADD = @TEMPLATE_LIBS@

分解main.c
这个程序在高层级创建一个clutter舞台,单个clutter因子(Exit标记)和一个基于cairo的纹理(这样就可以使用cairo API来渲染Exit标记),一个动画该标记的时间轴,两个输入处理程序以监测用户终止该程序的时间。

接下来,让我们深入模板源代码本身(在单个文件main.c中实现)的细节。下面介绍main.c的功能(跳过文件起始处的软件许可证)。

以下命令装载所有定义代码使用的函数和数据类型所需的头文件。对于基于Clutter的应用程序来说非常标准:

#include
#include
#include
#include

#ifdef HAVE_CONFIG_H
#include
#endif

接下来声明数据的数据结构,这些数据作为实例数据发送到各种信号处理器。这可能已经作为一个完全Gobject实现,但由于我们不向任何外部实体显示这些数据,我们选择使用标准的C结构。注意我们使用了gtk-doc注释。如果您使用--eneable-gtkdoc创建该项目,这些注释将用于自动生成项目文档。

这个数据结构的具体用途是提供因子、时间轴和执行时间轴绝对时间之间的镜像。

/**
* SignTimelineData: Instance data passed to signal handlers
*
* @started   Millisecond timestamp when timeline was started
* @actor     Reference to actor to animate
* @timeline  Timeline executing (which needs to be terminated before exiting)
*/
typedef struct {
  gulong started;
  ClutterActor *actor;
  ClutterTimeline *timeline;
} SignTimelineData;

 

原文链接:http://cache.qihoo.com/wenda.php?do=snap&act=fetchHtmlsnap&m=d517ce39dbd4c604dc0f1fef98aee20b&surl=http%3A%2F%2Fwww.mobpub.net%2Fviewthread.php%3Ftid%3D2063%26extra%3Dpage%253D1&kw=Moblin&src=wenda

 

有关Moblin的更多内容,请访问:Moblin中文站

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值