LoginSignup
9
9

More than 5 years have passed since last update.

CocoaPodsでのBuild Settingsの扱い

Last updated at Posted at 2013-01-24

FrogApps 技術ブログ始めました!
RailsやiOS、HTML5の情報を発信中!! → http://qiita.com/teams/frogapps


CocoaPods便利ですね。ライブラリを組み込む際に、いろんな依存関係をうまくプロジェクトの外に追いやってくれます。

試しにQRコード用のライブラリZxingを組み込んで、どんな風になるかみてみましょう。このZxing、CocoaPodsを使わない場合は、沢山の.frameworkを組み込んだり、ヘッダファイルの参照パスを指定しなきゃいけなかったりとプロジェクトのBuild settingsへ手を加える必要があります。

CocoaPodsのインストールは以下の通り。頻繁に更新されているようなので、時々インストールし直すとよさそうです。現在(2013/1月)のバージョンは0.16.1。

$ sudo gem install cocoapods
$ pod setup

あとは、プロジェクトフォルダの直下にPodfileというファイルを作成して、組み込むプロジェクトを記載します。 

Podfile
platform :ios

pod "ZXing", '2.1'

ライブラリを読み込みます。

$ pod install

プロジェクト名.xcworkspaceというファイルができるので、Xcodeで開きます。元のプロジェクトと、Podsというプロジェクトを含んだ形のワークスペースが開きます。あとはTargetをプロジェクトにあわせてビルドすれば、Podsのほうもビルドしてくれます。これだけです。

つまり、Cocoa PodsでZxingを組み込んだ場合、プロジェクトファイルに.frameworkを追加したりヘッダの読み込みパスを追加したりが必要ないんですよ(ライブラリにもよるかも)。手で組み込むよりずいぶんと楽です。

では、本来必要だったその辺の設定はどこに行ったかというと、Pods/Pods.xcconfigに記載されます。CocoaPodsが外部ライブラリのための設定をここに記載してくれます。

よって、プロジェクトのBuild Settingsには、そのプロジェクト本体に必要なもののみを記載すれば良いことになります。「外部ライブラリのためにBuild settingいじったけど、後で見たら何のために変更したか分からない」なんてことも防げますね。

生成されたPods.xcconfig
ALWAYS_SEARCH_USER_PATHS = YES
HEADER_SEARCH_PATHS = ${PODS_HEADERS_SEARCH_PATHS} ${PODS_ROOT}/ZXing/cpp/core/src/ ${PODS_ROOT}/ZXing/iphone/ZXingWidget/Classes/**
OTHER_LDFLAGS = -ObjC -liconv -lstdc++ -framework AVFoundation -framework AddressBook -framework AddressBookUI -framework AudioToolbox -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework ImageIO -framework QuartzCore
PODS_BUILD_HEADERS_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/ZXing"
PODS_HEADERS_SEARCH_PATHS = ${PODS_PUBLIC_HEADERS_SEARCH_PATHS}
PODS_PUBLIC_HEADERS_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/ZXing"
PODS_ROOT = ${SRCROOT}/Pods

ちなみに、CocoaPodsが取得してくるものには、そのライブラリのドキュメントやらサンプルコードやらは含まれないことが多いです。その辺は、ライブラリ本来のサイトを見に行きましょう。ライブラリを作られた方に感謝しつつ。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9