投稿者: Elliot Smith、更新日: 2010年1月29日
対象: Moblin Core Netbook MID IVI
このチュートリアルでは、Anjuta IDEの中でMoblin Cアプリケーションを編集するときに従うワークフローについて説明します。
次の手順について説明します。
できあがったアプリケーションはウィンドウの中にボタンが1つあるだけの小さなものですが、 すべてのMoblinプロジェクトに当てはまる基本的な原則を示しています。
このチュートリアルでは、グラフィカルなツールを使った開発について説明します。 コマンドラインを使うと、一部の手順(Moblin Package Creatorを使った手順など)が想定どおりに動作しないことがあります。 そのため、コマンドラインを使ってプロジェクトをビルドする場合、まずMoblin SDKのenvsetup.shスクリプトを使って環境を正しく設定する必要があります。 詳細についてはこちら(英文)を参照してください。
このチュートリアルでは、開発用およびデプロイ先マシンを設定するための手順(英文)に示された各コンポーネントがインストール済みであることを前提とします。
Linux Project Generatorを使って、アプリケーションの基本スケルトンを作成します。 次を入力して、コマンドラインからLinux Project Generatorを起動します。
$ projgen
次のようなウィンドウが表示されます。
[Code Language]のドロップダウンボックスは[C]のままでかまいません。
空のテキストフィールドに、自身と所属組織について当てはまる設定を入力します(上図は一例です)。
フィールドにマウスポインターを載せると、フィールドの目的と制約条件が表示されます。
できあがったプロジェクトへのパスは、このタブの設定に基づいて、<[Path]>/<[Short name]>となります。
次に、[Structure]タブで、プロジェクトがアプリケーションバイナリーから構成されるか、 ライブラリから構成されるか、またはその両方から構成されるかを指定できます。
デフォルト設定のままにします([Single Application])。
[Code]タブを使って、プロジェクトに格納されるコードのタイプを定義します。
この設定によって、生成されるプロジェクトに定型コードが追加され、 コマンドライン引数の読み込み/出力([Simple (console)])や 「Hello World」メッセージのアニメーション表示([Basic Clutter Application])が可能になります。
このチュートリアルの目的上、ここでは[Simple (console)]を選択します。
[Build]タブでは、autoconfおよびautomakeファイルに追加されるパラメーターを設定できます。
ここではデフォルトのままにします(詳しい設定内容がわからない場合はデフォルトのままにしてください)。
最後に、[License]タブで、プロジェクトをリリースするライセンスを指定できます。
ここでライセンスを選択すると、ライセンスが格納されたCOPYINGファイルがプロジェクトのルートディレクトリに作成され、 生成されるすべてのソースファイルにライセンス文が追加されるようになります。
ただし、プロジェクトをオープンソースにするつもりがない場合、ここでライセンスを選択したからといって、 将来必ずオープンソースでリリースしなければならないというわけではないことに注意してください。 必要に応じて、COPYINGファイルと、ソースファイルの中で対応する文を削除することも可能です。
プロジェクトの設定が終わったら、[Create]ボタンをクリックして生成します。 プロジェクトの作成に成功すると、次のダイアログボックスが表示されます。
ダイアログボックスを閉じます。
ファイルブラウザを使って、生成されたプロジェクトに移動すると、相当な数のファイルが表示されます。
これらのファイルがどのように使われるかを確認するには、コマンドラインでプロジェクトディレクトリに移動し、次のコマンドを実行します。
$ ./autogen.sh
configure.acおよびMakefile.amファイルが適用され、従来のconfigureおよびMakefileファイルがプロジェクトに生成されます。 これらのファイルを実際に使って、プロジェクトをビルドできます。
autogen.shスクリプトを実行したら、次のコマンドでプロジェクトソースをコンパイルできます。
make
ソースコードのあるディレクトリにバイナリーファイルが出力されます(アプリケーションが恒久的にインストールされるわけではありません)。 これで、アプリケーションを実行して次のような出力を確認できるようになりました。
$ cd src
$ ./hellomoblin
Program: hellomoblin
Hello!
Press <Enter> to exit hellomoblin
ただし、このようにしてコンパイルされたアプリケーションが、必ずしもMoblinマシンで実行できるわけではないことに注意してください。 コードのコンパイルに使うマシンには、コードをコンパイルするためのライブラリとヘッダーファイルの一式がありますが、 これらのライブラリがMoblinマシンにあるライブラリとまったく同じである可能性は低く、バージョンも同じとは限りません。 そのため、たとえアプリケーションがMoblinマシン上で動作したとしても、信頼性と一貫性が備わっているとは言えません。
次のセクションでは、Moblinツールチェーンを使って、正しいライブラリでアプリケーションをコンパイルする方法について確認しましょう。
このプロジェクトのコーディングにはAnjutaを使います。 (Gnomeでは[Programming]の下にある)メニューから、あるいは次を入力して、コマンドラインからAnjutaを起動します。
$ anjuta
Anjutaが起動したら、[File]メニューで[New] > [Project from Existing Sources]を選択します。
プロジェクト名を入力します。 このとき、プロジェクト名にはLinux Project Generatorで使ったものと同じ短い名前を使います(hellomoblin)。 [Import from folder]ラジオボタンを選択し、ドロップダウンボックスを使って、プロジェクトが格納されているディレクトリに移動して選択します。 最後に、[Create]をクリックしてプロジェクトを作成します。
次に、Moblin SDKプラグインを使うようにプロジェクトを設定します。[Edit] > [Preferences]に移動し、[Installed plugins]タブをクリックします。 リストをスクロールして[Moblin SDK plugin]を表示し、隣にあるチェックボックスをチェックします。
これでプラグインが有効になりました。 [Preferences]ダイアログの左側にあるプラグインのリストを下にスクロールして、[Moblin SDK]の項目をクリックします。 フィールドに次のように入力します。
/sbin/ifconfig完了した設定は次のようになります。
これらの手順が完了したら、[Close]をクリックします。
プロジェクトのソースファイルはsrcディレクトリにあります。ここでは、ソースファイルは「main.c」1つだけです。 このファイルを開き、ライセンス宣言の下にあるコードを次のコードで置き換えます。
#include <nbtk/nbtk.h>
/**
*
* Displays a window with a "Hello Moblin" button
*
*/
int
main(int argc, char* argv[])
{
ClutterActor *stage;
NbtkWidget *button;
clutter_init (&argc, &argv);
stage = clutter_stage_get_default ();
button = nbtk_button_new_with_label ("Hello Moblin");
clutter_container_add_actor (CLUTTER_CONTAINER (stage),
CLUTTER_ACTOR (button));
clutter_actor_show (stage);
clutter_main ();
return 0;
}
1行目でnbtk.hヘッダーファイルを読み込み、MoblinのUI要素を作成するためのClutter とNetbook Toolkitを使えるようにします。 ただし、開発用のマシンにこのライブラリがインストールされている可能性は低いため、ローカルライブラリを使ってこのプロジェクトをビルドすると、 おそらく失敗します。
そこで、nbtkライブラリをプロジェクトのビルドで使えるようにするには、 プロジェクトのルートディレクトリにあるビルドコンフィギュレーションファイルconfigure.acを修正する必要があります。
Anjutaでconfigure.acを開き、次の行を
PKG_CHECK_MODULES(HELLOMOBLIN, glib-2.0)
次のように変更します。
PKG_CHECK_MODULES(HELLOMOBLIN, [glib-2.0 nbtk-1.2])
これにより、コードをコンパイルするときに、コンパイラーがnbtk-1.2ライブラリをリンクできるようになります。
これでプロジェクトをビルドできるようになりました。 [Build]メニューでプロジェクトを選択し、[Configure Project]を選択すると、次のダイアログボックスが表示されます。
[Regenerate project]チェックボックスをチェックしてから[Execute]ボタンをクリックします。[Configure options]には次のような効果があります。
configure.acまたはMakefile.amを変更した場合、[Build] > [Configure Project]を選択し、[Regenerate project]をチェックして、 ビルドスクリプトをもう一度再生成します。
最後に、[Build]メニューから[Build Project]を選択して、プロジェクトをコンパイルします。 こうすると、プロジェクトのソースに対するmakeコマンドが実行されます。 なお、プロジェクトがMoblinツールチェーンを使ってコンパイルされているかどうかを目視確認するには、 コンソール出力からmoblin-cross-toolchainを探すことをお奨めします。次にその例を示します。
i586-moblin-linux-gcc -DHAVE_CONFIG_H -I. -I.. -pthread -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/include/glib-2.0 -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/lib/glib-2.0/include -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/include/nbtk-1.2 -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/include/clutter-1.0 -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/include/cairo -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/include/pango-1.0 -I/home/demo/moblin-sdk-0.8/moblin-cross-toolchain/i586-moblin-linux/sys-root/usr/include/gtk-2.0 -Wall -Werror -g3 -O0 -ggdb -DPKGDATADIR="\"/usr/local/share/hellomoblin\"" -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
アプリケーションがコンパイルされたら、Moblinが実行されているマシンへのデプロイが可能になります。これには2つの方法があります。
yumいずれの方法を選択したとしても、まずデプロイ先マシンでリモートアクセスができるように設定する(英文)必要があります。
(Moblin SDKプラグインが設定された) Anjutaで[Tools]メニューに移動し、[Deploy]を選択します。デプロイ先マシンのrootのパスワードを要求するプロンプトが表示されます。
パスワードを入力して[OK]をクリックします。コンソールには、SSHによってファイルがデプロイ先マシンにコピーされる様子が次のように表示されます。
ファイルがデプロイ先マシンの/usrディレクトリにコピーされました(コピー先のディレクトリは、プロジェクトの設定時に渡された--prefixオプションによって設定されます)。なお、ファイルをクリーンアップしなければならない場合、コピーされたファイルとそのコピー先を分析する必要があります。
再デプロイするには、リビルドしてから[Tools] > [Deploy]をもう一度実行します。
このアプローチでは、RPMパッケージの生成にMoblin Package Creator (MPC)を使います。手順はより複雑になりますが、配布可能なパッケージが生成され、複数の異なるMoblinマシンにインストールできるようになります。
MPCを使ってパッケージの作成を試みる際には、必ず事前にAnjutaでプロジェクトのconfigureとbuildを完了してください。
コマンドラインを開き、プロジェクトディレクトリに移動します。その後、MPCを起動します。
$ cd /home/demo/hellomoblin
$ moblin-package-creator
次に、MPCの[Main]タブに、プロジェクトに適した値を入力します。次にその例を示します。
[Project root path]設定がプロジェクトのルートディレクトリを指すようにする必要があります。
また、[Requires]もユーザにとってわかりにくいと思われるフィールドですが、このフィールドでは、アプリケーションが実行時に必要とするライブラリを指定します。このアプリケーションの場合、アプリケーションでMoblin 2.1同梱のバージョン(つまりバージョン1.1.13)以上のnbtkを必要とすることを指定します(実際には、このアプリケーションはこれよりも古いバージョンのnbtk APIでも動作しますが、ここではデモのためにこのバージョンを指定します)。なお、[BuildRequires]はdebファイル作成専用であるため、ここでは使いません。
次に、[Build Control]タブに入力します。
[SDK path]をSDKインストールのルートディレクトリに移動することで設定します。[Output]ディレクトリはプロジェクトのディレクトリに設定でき、、[RPM (.rpm)]以外のすべてのチェックボックスのチェックを外すことができます。
次に、[License Details]タブに入力します。
プロジェクトの生成時に選択したライセンスタイプと同じものを選択し、その他の詳細を適切に入力します。(他の人のコードをパッケージするのではなく)自身のコードを配布する場合、上流(Upstream)のオプションには、自身の名前とWebサイトを使うことができます。
最後に、[Create]をクリックします。ターミナルウィンドウが開き、パッケージのビルドから出力が表示されます。この出力の末尾は次のようになります。
*****************************************************
Done. The new package has been saved to
./hellomoblin-0.1.0-1.i386.rpm
You can install it in your system anytime using:
rpm -i hellomoblin-0.1.0-1.i386.rpm
*****************************************************
また、次のようなプロンプトも表示されます。
Package created successfully in <project directory>.
失敗した場合、Anjutaでプロジェクトの再設定とリビルドを試み、もう一度これらの手順をやり直してください。
ビルドが成功したら、[Quit]をクリックしてMPCを閉じます。
できあがったRPMファイルをお好みの方法でデプロイ先マシンにコピーします。たとえば、SCPを使って開発用マシンからデプロイ先マシンにRPMファイルをコピーすることもできます。
$ scp hellomoblin-0.1.0-1.i386.rpm demo@10.0.5.4:~/Download
demo@10.0.5.4's password:
hellomoblin-0.1.0-1.i386.rpm 100% 8056 7.9KB/s 00:00
(~/Downloadは、デプロイ先マシンの有効なディレクトリを示します)。
ファイルのコピーが終わったら、デプロイ先マシンのコマンドラインに切り替え、次のコマンドを入力してRPMをインストールします。
$ cd ~/Download
$ sudo rpm -i hellomoblin-0.1.0-1.i386.rpm
$ [sudo] password for demo:
RPMを削除するには、次を入力します(再デプロイする必要がある場合など)。
$ sudo rpm -e hellomoblin
最後に、アプリケーションをネットブック上で実行してみましょう。
Linux Project Generatorによってメニュー項目とアイコンファイルが用意されるため、ネットブック上にインストールすると、[applications]ゾーンに自動的に表示され、すぐに実行できるようになります。[applications]ゾーンの[Other]カテゴリーをクリックすると、アプリケーションのアイコンが表示されます(ただし、表示されない場合もあります)。
アイコンをクリックしてアプリケーションを起動すると、次の画面が表示されます。
これで、初めてのMoblinアプリケーションが完成しました(この時点ではボタンに機能はありません)。