サンプルエクステンションのビルド

はじめてのエクステンションのビルドを楽に行うため、 Fabric Engine インストーラでは自動でサンプルエクステンションをインストールします。ここからはじめましょう

開発ツールのインストール

手始めに各自の開発プラットフォームに合わせ、適したツールをインストールしましょう。最小構成の場合、プラットフォームにあわせた C++ コンパイラと、ビルドツール scons が必要です。

プラットフォームによって開発ツールのインストール手順は変わります:

  • Windows: Visual Studio をインストール。Visual Studio 2013 を公式にサポートしますが他のバージョンでも動作します。
  • Linux では Clang++ あるいは the GNU C++ コンパイラをインストールします。clang, g++ ( Ubuntu では)として通常インストールしますね。
  • OS X: XCode 5(we use 5.0.1)、OS X app storeより入手

scons ツールのインストールもプラットフォームに依ります。

  • Windows: http://scons.org より zipファイルをダウンロード展開. コマンドプロンプトから scons を含むフォルダへ移動, python setup.py install を実行。ディレクトリ c:\Python27\Scriptsscons.pyscons にリネーム. 最後に, c:\Python27\Scripts が環境変数 PATH 中に存在することを確認。
  • Linux: パッケージマネージャから scons をインストールします。(例 apt-get install scons
  • OS X: http://scons.org/. からzipファイルをダウンロードし展開, ターミナルを開き scons を含むフォルダへ移動, run python setup.py install コマンドを実行。

正常に scons をインストールできたかの確認を、コマンドプロンプトから(空のディレクトリで) scons と実行することで行えます。以下の様な出力になるでしょう:

scons: *** No SConstruct file found.
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/scons-2.2.0/SCons/Script/Main.py", line 905, in _main

サンプルをコピー

次のステップは、サンプルエクステンションのディレクトリをコピーです。サンプルエクステンションは $FABRIC_DIR/EDK/Samples/HelloWorld にあります。 $FABRIC_DIR は、環境変数 FABRIC_DIR であり、インストーラにより設定されます。(例えば) cp -r コマンドによりディレクトリとコンテンツをコピーします。

サンプルをビルド

コピーしたサンプルのあるディレクトリでコマンドプロンプトから、 scons と実行します。以下の様な出力になるでしょう:

scons: Reading SConscript files ...
Running SCons with -j8
scons: done reading SConscript files.
scons: Building targets ...
/Users/pzion/Fabric/SceneGraph/stage/Darwin/x86_64/Release/Tools/kl2edk -o HelloWorld.h HelloWorld.kl
Compiling       HelloWorld.cpp
SharedLibrary   libHelloWorld-Darwin-x86_64.dylib
scons: done building targets.

サンプルをテスト

同じディレクトリで、 python test.py と実行します。以下の様な出力になるでしょう:

[FABRIC:MT] |FABRIC_PRODUCT_NAME| version |FABRIC_VERSION|
[FABRIC:MT] Registered extension {HelloWorld} in directory: .
[FABRIC:MT] Registered extensions {BadVersion,UnitTest,FabricALEMBIC,FabricBULLET,FabricCIMG,FabricEXR,FabricFBX,FabricFILESTREAM,Geometry,FabricHDR,Images,FabricLIDAR,Math,FabricOBJ,FabricOPENCV,FabricOGL,FabricPNG,RTR,RTRAdaptors,FabricStringTools,FabricTEEM,FabricTGA,FabricVIDEO} in directory: /Users/pzion/Fabric/SceneGraph/stage/Darwin/x86_64/Release/Exts
[FABRIC:MT] Compiled extension HelloWorld in 0.572ms
[FABRIC:ID] Optimized extension HelloWorld in 7.398ms
[FABRIC:MT:node:op] KL: Enter entry
[FABRIC:MT:node:op] HelloWorld: Extension: Enter GetHelloWorldString
[FABRIC:MT:node:op] HelloWorld: Extension: Leave GetHelloWorldString
[FABRIC:MT:node:op] KL: GetHelloWorldString returned: Hello, world!
[FABRIC:MT:node:op] KL: Leave entry
Python got: Hello, world!

この出力は、KLコードからの出力をしめし、エクステンションから呼ばれる関数の呼び出しやエクステンション自体の出力を示します。次節においてより詳しくサンプルエクステンションの動作について解説します。