Xcodeでworkspaceを使って複数のprojectをまとめて扱う方法
細かいところをよく忘れるので、全体の流れをメモ。
動作を確認した環境
環境 | 情報 |
---|---|
Xcode | 6.0.1 (6A317) |
Swift | 1.0 |
Date | 2014/10/13 |
概要
基本的な流れはこんな感じ。
- 取りまとめるprojectを作成
- workspaceを作成
- workspaceにprojectを登録
- 参照や依存関係を設定
あとは使うだけ。
1. 取りまとめるprojectを作成
適当にprojectを作成。今回は、アプリとフレームワークそれぞれのprojectを用意。
JunkApp
アプリ側のproject。Single View Applicationから作成。
2. workspaceを作成
新規でworkspaceを作成。
3. workspaceにprojectを登録
メニューからAddを選んでworkspaceにprojectを登録。
この時、『Copy items into destination group's folder (if needed)』のチェックを外しておくのがポイント。たぶん。
projectを2つ追加するとこんな感じになるはず。
4. 参照や依存関係を設定
今回はフレームワークとそれを使うアプリを登録したので、フレームワークの参照を設定。
アプリ側からフレームワークを参照
アプリ側のターゲットの設定で、フレームワークを追加。
普通に追加するだけ。
謎の警告が出るのでSearch Pathを修正
アプリ側のターゲットの設定で、Search Pathを修正。
Target - [Build Settings]で[Framework Search Paths]を探してダブルクリック。
なぜか、追加したフレームワークのパスが入ってるのでこれを削除。
依存関係がうまくいかない場合
運が良ければこれだけの設定で普通に使えるはず。なぜか、フレームワーク側の修正がアプリ側に波及しない場合、以下の設定を行って無理矢理フレームワークに依存させる。
これで、うまくいくようになるはず。たぶん。
アプリでフレームワークを使用する
普通に、SDKで用意されているフレームワークを使うのと同じ。importで取り込んで、あとは普通に使うだけ。
// フレームワークを参照 import JunkFramework class AppClass { // フレームワーク側のクラスを使用 func useJunk() { let temp = JunkClass() temp.junkFunc() } }
アクセス制御がpublicになってるものしかアクセス出来ないので注意。