hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

openFrameworks for iOSでビルドできないときに確認する設定


スポンサーリンク


訳あってopenFrameworksに手を出してみました。フリーの環境である程度簡単に解析結果をビジュアライズすることが可能、かつマルチプラットフォームというとopenFrameworksが一番良さそうだったのが理由です。
Cinderという似たようなものもあるのですが、openFrameworksの方は、Linux*1もあるのが決め手でした。

基本的にMac/iOS版はopenFrameworksをダウンロード後、解凍するだけで使えるのでお手軽です。解凍後、projectGeneratorでプロジェクトを生成すれば初期化されたXcodeプロジェクトが生成されます。C++を採用した環境でこんなに手軽にプロジェクトが新規作成できることに感動しました。

さて、本題です。
openFrameworksのprojectGeneratorで生成したプロジェクトは、そのままだとビルドエラーが出る場合があります。特にiOS版。エラーの内容は、こんな感じ。

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv6 armv7).

または

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

どうやら、openFrameworksのライブラリは新しいCPUアーキテクチャに対応していないみたい。自前でビルドすれば別なんだろうけど。ライブラリファイルをfileコマンドで確認してみると対応しているCPUアーキテクチャが確認できます。

$file freeimage.a
freeimage.a: Mach-O universal binary with 2 architectures
freeimage.a (for architecture armv6): current ar archive random library
freeimage.a (for architecture armv7): current ar archive random library 

 

プロジェクトをこんな風に変更すれば、正常にビルドできます。

Architecturesにarmv6、armv7を入れ、Valid Architecturesもarmv6  armv7としておきます。アプリのプロジェクトとiPhone+OF Static Libraryにも同じ設定をしておきます。

f:id:deis:20150617004112p:plain

ちなみに、シミュレータで動作させる場合は、lib/osxの方に入っているライブラリの設定が必要です*2

$file freeimage.a
freeimage.a (for architecture i386): current ar archive random library

 

アップデート(2015/6/17)

エラーのメッセージがシミュレータ用になっていたため、修正

*1:Raspbarry Piで動かす方法も公式にある

*2:やったことはないんですけど。。