Xcode4のworkspaceを使ってコード共有

2011/8/19 xcode

xcode4になって、新しくworkspaceという機能がありました。 いままで全く感心持ってなかったんですが、自作ライブラリをそろそろ作ろうかと思ったときに便利そうだったので使ってみました。 workspaceは

  • 複数のプロジェクトを一つのwindowで開ける
  • そのビルド結果をworkspace内で参照し合える
  • 他のプロジェクトを参照した場合、ビルド時にそのプロジェクトもビルドし直してくれる

という機能があります。 これを利用することで、プロジェクトAでライブラリをつくり、プロジェクトBでそのライブラリを使用するということができるようになります。 プロジェクトはそのまま(設定をいじることなく)流用できるので、複数プロジェクトで同じコードを使っている場合、かなり便利です。

■workspaceをつくる

  1. xcodeでFile → New → New Workspace…を選択し、新規作成する
  2. ライブラリ用のプロジェクトファイルを作成or追加する 左下の+ボタンから新規作成しても、Finderからのドラッグ&ドロップで追加してもOKですが、「Cocoa Touch Static Library」でプロジェクトを作成するのを間違えないように!
  3. ライブラリ用を使う側のプロジェクトファイルを作成or追加する

最終的にStatic Library用のプロジェクトと、実際にアプリを作るプロジェクトが仲良くたてに二つ並んでいればOKです ※RedViewはプロジェクト作成後に追加したファイルです ■ライブラリ側のプロジェクト設定

  1. プロジェクトのターゲット → Build PhasesですべてのHeaderをPublicにする ※おそらくこれは.hファイルを追加するたびに毎回する必要があります

■ライブラリを使う側のプロジェクト設定

  1. プロジェクトのターゲット → Build Phasesで、ライブラリで作成した.aファイルを関連付ける
  2. プロジェクトのターゲット → Build Settingsを開く
  3. Public Headerを読み込むように、User Header Search Paths に”$(BUILT_PRODUCTS_DIR)”を追加する
  4. Other Linker Flagsに”-ObjC”,”-all_load”を追加する

これで設定完了です。 ビルドや実行をするときは左上のターゲットの設定を間違えないように気をつけてください。 ライブラリ用とアプリ用の二種類があると思いますが、基本的にはアプリ用だけ使っていればOKです。 プロジェクト設定はそれぞれ1回ずつでOKですが、ライブラリは使い回すことを考えると多用するのはライブラリを使う側のプロジェクト設定になると思います。 subversionなどの管理も完全にプロジェクト単位になるので楽になりますし、コードを複数プロジェクトで共有している人は使ってみはいかがでしょうか?

img_show