这些页面简要介绍了如何在标准的Linux开发环境中针对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-- READMEdrwxr-xr-x src
文件AUTHORS、ChangeLog、COPYING、INSTALL、NEWS和README都是开源软件项目通常会包含的标准文件。查看它们的具体内容,看看其中包含了哪类信息。
文件autogen.sh是一个小型shell脚本,它调用autoconf工具创建必要的组件,从而根据configure.in中的输入针对您的系统对编译进行配置。关于autoconf的详细说明已经超出了本指南的范围,您可以在autoconf项目页面上找到关于autoconf的更多信息。
configure.in文件的相关部分如下所示:
...PKG_PROG_PKG_CONFIGPKG_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软件包都处在平台的合理层次上。根据检查结果,configure.ac使用适当的编译标志创建变量TEMPLATE_CFLAGS和TEMPLATE_LIBS以发现这些软件包。
模板项目的“真正”部分包含在src目录中。
% ls src-rw-r--r-- main.c-rw-r--r-- Makefile.am
Makefile.am包含输入到autoconf工具中的内容,该文件告知autoconf使用从configure.ac创建的变量CFLAGS和LDFLAGS(通过上述TEMPLATE_CFLAGS和TEMPLATE_LIBS),从src目录中包含的所有源文件和头文件编译一个叫做template的二进制文件:
% cat Makefile.amINCLUDES = @TEMPLATE_CFLAGS@bin_PROGRAMS = templatetemplate_SOURCES = *.c *.htemplate_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;
本文介绍如何使用Moblin应用程序模板快速构建Linux环境下的Moblin软件平台应用。文章提供了下载模板的方法,并逐步指导如何配置和编译项目。同时,还详细解析了模板文件结构及其工作原理。
1699

被折叠的 条评论
为什么被折叠?



