构建Moblin应用程序(一)

这些页面简要介绍了如何在标准的Linux开发环境中针对Moblin软件平台构建应用程序。

首先需要下载moblin应用程序模板(一些必要组件是必不可少的。)

·       Moblin应用程序模板

·     必要组件   

·      额外资源   

 

 

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的旋转按钮窗口。按下/点击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

文件AUTHORSChangeLogCOPYINGINSTALLNEWSREADME都是开源软件项目通常会包含的标准文件。查看它们的具体内容,看看其中包含了哪类信息。

文件autogen.sh是一个小型shell脚本,它调用autoconf工具创建必要的组件,从而根据configure.in中的输入针对您的系统对编译进行配置。关于autoconf的详细说明已经超出了本指南的范围,您可以在autoconf项目页面上找到关于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-cairoglib软件包都处在平台的合理层次上。根据检查结果,configure.ac使用适当的编译标志创建变量TEMPLATE_CFLAGSTEMPLATE_LIBS以发现这些软件包。

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

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

Makefile.am包含输入到autoconf工具中的内容,该文件告知autoconf使用从configure.ac创建的变量CFLAGSLDFLAGS(通过上述TEMPLATE_CFLAGSTEMPLATE_LIBS),从src目录中包含的所有源文件和头文件编译一个叫做template的二进制文件:

% cat Makefile.am
INCLUDES = @TEMPLATE_CFLAGS@

bin_PROGRAMS = template

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

分解main.c

这个程序在较高层次上创建了一个cutter 舞台,一个clutter因子(Exit标记)和一个基于cairo的纹理(这样就可以使用cairo APIs来渲染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;

 

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值