Hatena::Groupiphone-dev

iOS プログラミングメモ

2013-05-31 (Fri)

CocoaPods とワークスペース 18:07  CocoaPods とワークスペース - iOS プログラミングメモ を含むブックマーク

CocoaPods で pod install するとワークスペースができますのですよ。

でまあ 第4回 iphone_dev_jp 勉強会 の時の懇親会のあとの飲み会の時にちょっとした CocoaPods の話になって「CocoaPods 使ってないのもったいなすぎワロタ」って言われた時に、「ワークスペースとか使ったことないし良くわかんない謎システムだから怖い」って感じで話したくらいにはワークスペースというやつに縁がないので、CocoaPods とワークスペースの関係について調べてみます。

ワークスペースって何者

まず Xcode のワークスペースなんですが、no title に完結に書いてありました。

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

これも同じことかな。

  • If one project depends on the products of another in the same workspace, Xcode can detect this and automatically build the projects in the correct sequence.
  • Because all the files in one project are visible to all the other projects in the workspace, you don’t need to copy shared libraries into each project folder separately.
Create a Workspace to Work with Multiple Related Projects

Apple による Xcode の紹介のところにもちらっと書いてある。

Xcodeのワークスペースの特長は、デベロッパの集中を維持させることです。

Xcode - Apple Developer

新しくワークスペースを作ったら空っぽの画面なので、なんなんだろうと思っていたのですが、xcodeproj をドラッグ&ドロップするとそのプロジェクトがワークスペースに入る。でもって複数のプロジェクト間で参照しあえると。

CocoaPods ではどうなっているか

pod install すると、単純に既存のプロジェクトにライブラリ群がそのまま追加されるんだと思いきや、これがもう全然違う。違い過ぎてビビる。pod install すると新しく Pods ていうディレクトリを作ってくれて、その中に Pods.xcodeproj ていうプロジェクトが自動で作られる。ライブラリはそん中に入るわけ。

で、既存のプロジェクトとの橋渡しにワークスペースが活用されると。うひゃー、すごいな。

Pods プロジェクトは、Podfile に書いたライブラリを使えるようにした libPods.a ていうバイナリをビルドすることができる。既存のプロジェクトはその libPods.a に静的リンク(でいいんだっけ?)されているので、Podfile に書いたライブラリが自由に使えるようになると。

既存のプロジェクトにはライブラリのヘッダファイルとかは追加されなかったり、libPods.a のパスがワークスペースから開いた時と違うので単体でビルドしたい場合はちょっと工夫が必要そうに見える。けど特にそのようなことをする必要はないか。

(追記)

ちょっとだけ間違っていました。既存のプロジェクトへの変更は、libPods.a のリンク追加以外に Pods.xcconfig ていうファイルが追加されていた。このファイルの中に、Pods でインストールしたライブラリのヘッダファイルへのパスが書いてあって、そのお陰で import できるようになってるみたい。これはいいね。

git について

話は変わるけど、CocoaPods でインストールしたファイルってリポジトリに入れない方がいいんですよね。

→ 岸川神が教えてくれました!

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130531