歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 構建Moblin應用程序(一)

構建Moblin應用程序(一)

日期:2017/2/25 12:03:30   编辑:關於Linux

  

  這些頁面簡要介紹了如何在標准的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-- README
drwxr-xr-x src

  文件AUTHORS、ChangeLog、COPYING、INSTALL、NEWS和README都是開源軟件項目通常會包含的標准文件。查看它們的具體內容,看看其中包含了哪類信息。

  文件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-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.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;

  Moblin應用程序模板

Copyright © Linux教程網 All Rights Reserved