openframeworks Xcode セットアップガイド:

Step 1 - Xcodeのインストール
Step 2 - openFrameworksを使う

注意:WarningsとErrors
注意:実行ログ
注意:アプリケーションの保存先

Xcodeの特殊な動作:メインプロジェクトの保存先フォルダ名の空白
Xcodeの特殊な動作:プロジェクトへのファイルの追加


Step 1: 2.4.1かそれ以上のバージョンのXcodeをダウンロード、インストール

XcodeはAppleが提供するMac OS Xのための無料のIDEです。アップルデベロッパとしての登録は必要ですが、Apple Developer Centerからダウンロードすることができます。登録は無料です。

(adc login)
apple developer connectionにログインします

ログインしたら、ダウンロードのリンクをクリックします。

(adc download)
ダウンロードのリンク

デベロッパツールのダウンロードを選びます。

(adc download)
デベロッパツールへのリンク

最新版のXcodeをダウンロードします。

(adc download)
Xcodeのダウンロード

900MBのダウンロードが完了したら、インストーラをマウントしてXcodeToolsパッケージを実行します。オプションが表示されるまでは表示にしたがって進めてください。オプションで、一部のファイルのインストールを省略するか聞いてきます。もしHDDの空き容量が少ないようでしたら、1.3GBのドキュメントはスキップしても構いません。

(xcode install)
インストール中のオプション

インストールが始まります。

(xcode install)
インストール中

デベロッパツールはDeveloperという名前のフォルダ内にインストールされます。 Xcodeのアプリケーションは/Developer/Applications/Xcode.appに入っています。

(xcode location)
Xcodeの保存先

Xcodeが正常にインストールされました。いよいよopenFrameworksのexamplesを実行してみましょう。


Step 2: openFrameworksを使ってみる

openFrameworksのexamplesをこちらからダウンロードしてください(FATの方が良いです)。 ダウンロードできたら、好きな場所に解凍してください。 解凍できた内容は以下のようになるはずです。

(openFrameworks project sturcture)
examplesのフォルダ構造

examplesはappフォルダの中に入っています。 それぞれのexampleフォルダの中には"openFrameworks.xcodeproj"というXcodeのプロジェクトファイルが入っています。ダブルクリックをすればXcodeのプロジェクトとして開くことができます。

exampleをXcodeで開いたら、左のカラム内にファイルのリストが見えます。そして選択されたファイル(この例では"testApp.cpp"ファイル)の内容が右のパネルに表示されます。

(Xcode environment)
openFrameworks Xcode example プロジェクト

最初にすることは、本当に動くかどうか、exampleをコンパイルして動かしてみることです。 Xcodeのウィンドウの上部に"ビルドして実行"ボタンがあるはずです。 このボタンを押せばexampleのアプリケーションがコンパイルされ、エラーが無ければアプリケーションの実行ができるはずです。 もし大量のエラーが出てしまったら、ビルドメニューで "全てのターゲットのクリーニング"を実行してから、もう一度コンパイルしてみてください。

(Xcode buttons)
"ビルドして実行"ボタンでアプリケーションを実行
(type example)
ofType exampleが動きました

アプリケーションが動いたら、"Esc"キーを押して終了させてください。


注意:WarningsとErrors

コンパイルしている間、小さい実行メータがXcodeウィンドウの右下にあるのに気付くでしょう。このメータはコンパイルしたファイルの割合を示しています。

黄色い三角とその次の数字は、コンパイラからのwarningメッセージを表します。 ほとんどの場合、warningメッセージは無視できますが、詳細を読みたい場合は三角をクリックすれば、別ウィンドウでリストとして表示してくれます。

(compile progress)
コンパイルの実行メータとwarningメッセージ

もしコンパイラがコード内にerrorを発見したり、不幸にも何らかの理由でコンパイルが失敗したら、 Xcodeウィンドウの右下に以下のようにエラーが表示されます。

(compile failed)
2つのエラーによりコンパイルが失敗

warningメッセージと同様に、errorを見るためには赤い円をクリックします。すると別ウィンドウでリストが表示され、コード中の該当する行がハイライトされます。

(show the errors)
コード中のエラーがハイライトされる

errorメッセージは常に理解できるとは限らないことを心に留めておいてください。しかし大抵の場合、どこにエラーがあるか教えてくれるだけでもミスに気付くのには十分だと言えます。

上のコードでは、ハイライトされた行を見ることで、すぐに"frabk.tff"(ロードしようとしたフォント名)と32(フォントのサイズ)の間のコンマを忘れていたことが分かりました。

コンマを打ったら2つのエラーも消え、バッチリコンパイルと実行ができました。

(app launches)
graphics exampleアプリケーションの実行

注意:実行ログ

Xcodeプロジェクトを実行すると、背後で"実行ログ"と呼ばれる別ウィンドウが立ちあがります。これは実行中にアプリケーションについてのフィードバックをくれるコンソールです。

アプリケーションを実行すると実行ログに最初に表示されるのは、以下の文字です。
[Session started at 2007-02-25 15:34:07 +0100.]

アプリケーションを閉じると、以下のような文字が表示されるでしょう。
openFrameworks has exited with status 0.

実行ログの便利な点は、"printf"というコマンドで好きなときに表示できることです。openFrameworks関係のメッセージやエラーがあれば、それらもここに表示されます。

(xcode runlog)
graphics exampleの実行ログ

注意:アプリケーションの保存先

Xcodeでコンパイルし実行しようとしているアプリケーションはopenFrameworks.appと呼ばれます。そしてその保存先はそれぞれのプロジェクトフォルダ内の"build/Debug/"になります。このファイルをダブルクリックすることでXcodeを使わなくても直接実行することができます。実行ログが見えない以外はXcodeで実行したときと何も変わりません。

(build location)
openFrameworksアプリケーションの保存先

Xcode - バグと特殊な動作

メインプロジェクトの保存先フォルダ名の空白:

いくつかの理由により、メインプロジェクトの保存先フォルダ("app""libs"フォルダがあるところ)の名前にスペースが含まれる場合、Xcodeうまく動いてくれません。

ライブラリを見つけることができず、リンクエラーを起こしてしまいます。

(load images relatively)
間違ったフォルダ名の付け方

上のフォルダ名はOSXPPCの間にスペースがあるのが問題です。以下のようにスペースをダッシュに変えたら幸せになれます。

(load images relatively)
良いフォルダ名の付け方


プロジェクトへのファイルの追加:相対パス VS 絶対パス

Xcodeのプロジェクト内にソースコードのファイルやライブラリを追加すると、 そのファイルへのパスを相対パスにするか絶対パスにするかを聞かれます。

(add local files relatively)
openFrameworksフォルダ内の全てのファイルにプロジェクトからの相対パスを選ぶ

openFrameworksフォルダとそのサブフォルダ内の全てのファイルは、常に"relative to project"を選んでください。

もし絶対パスを選んでしまったら、openFrameworksフォルダを他のコンピュータに移動するたびに、保存先のフォルダ名が異なるためにXcodeが動かないという事態に陥ってしまいます。

例えば、以下のようなパスの場合:"/User/yourname/Documents/openFrameworksProjects"XcodeプロジェクトはopenFrameworksフォルダがこのフォルダ内にあるときのみ動きます。明らかにこれは良くないことです。

デフォルトの設定は、大抵の場合絶対パスです。なので、追加を押す前に"relative to project"変えなければいけないことを心に留めておいてください。

絶対パスを持てる唯一のファイルは、System Frameworksですが、ほとんどの場合、これを追加する必要はありません。