で、SDKを見ると、javaのSDKがあったので、せっかくだからScalaで実装して遊ぼうと思い、まずはSBTでLeapMotion SDKが動く環境を作ってみた。
まずはLeapMotionのDeveloperサイトでユーザ登録し、SDKをダウンロードする。
次にSBTプロジェクトを作成し、libディレクトリに"LeapJava.jar", "libLeap.dylib", "libLeapJava.dylib"を置く。
SDKにJava用のサンプルコードが入っているので、それをScalaで書きなおす(IntelliJ IDEAでコピペしたら勝手にScalaに変換してくれるw)。
ここまでは順調に行ったのだが、僕はここで詰まった。
lib配下に置いた "libLeap.dylib", "libLeapJava.dylib"はネイティブライブラリであるので、普通のjarファイルと違ってlibに置いただけではSBTでロードすることができない。
"-Djava.library.path"で明示的にlibディレクトリを指定する必要がある。
SBTでrunコマンドを実行すると、通常はSBTが動いているのと同じJVMで実行されるから、単純に考えるとSBTの起動時に"-Djava.library.path"オプションを指定してやればよさそうなのだが、これではうまく動かなかった。
なので他の方法を。
build.scalaにいくつかの設定を加えてやることで、runコマンドでの実行時に使用するJVMをSBTが動いているのとは別のものにすることができる。
Forking
そこでbuild.scalaに以下の設定を入れてみる。
fork := true javaOptions ++= Seq( "-Djava.library.path=.:./lib" )
これで実行してみたが、コンソールからの入力を受け付けてくれず、思った通りに動かない。fork run時に、標準入出力の設定をきちんと書いてやらないといけないようだ。
そこで次の設定を追加。
connectInput in run := true
これで動いた!!
ちなみにこれらの設定を入れたsbtプロジェクトのテンプレートをgithubに上げといた。
leapmotion-sbt
さて。やっとスタートラインに立ったので、なにを作ろうかなー?
0 件のコメント:
コメントを投稿