歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

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;

Copyright © Linux教程網 All Rights Reserved