1. アプリ本体のターゲット
2. Action Extensionのターゲット
3. 本体とExtensionで共用するコードのターゲット
の3つを作成し、CocoaPodsでライブラリを指定してworkspaceを作成しました。
その際、設定でいくつか引っかかったのでメモ。
Podfile
platform :ios, '8.0'
# アプリ本体のターゲット (ImagesToPDF)
target 'ImagesToPDF' do
pod 'LibraryA"
end
# 共用コードのターゲット (FLICommon)
target 'FLICommon' do
pod 'LibraryB'
pod 'LibraryC'
end
こんな感じでターゲット毎に使用するLibraryを指定できる。
xcconfigの設定
これを、pod installすると以下のようにターゲット毎のxcconfigが作成される
ターゲット指定しない時は Pods.debug.xcconfig , Pods.release.xcconfig になるけど、ターゲット指定の時は Pods-{ターゲット名}.debug.xcconfig のようなファイル名に。
これらxcconfigは、ProjectのConfigurationsで指定されるはず。
CocoaPodsで設定が変更できなかった時は、pod install時に以下の警告がでたりする。
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `ImagesToPDF` to `Pods/Target Support Files/Pods-ImagesToPDF/Pods-ImagesToPDF.debug.xcconfig` or include the `Pods/Target Support Files/Pods-ImagesToPDF/Pods-ImagesToPDF.debug.xcconfig` in your build configuration.
この時は、ProjectのConfigurationsで違うxcconfigになっている可能性があるのでチェック。
Podsのライブラリ設定
Podsで作成されたライブラリも、
ターゲット指定してない時は、libPods.a というファイル名だが、
ターゲット指定している時は、libPods-{ターゲット名}.a というファイル名になる。
このライブラリは、Build Phases の Link Binary With Libraries に設定されている。
ビルドエラーで
ld: library not found for -lPods
...と言われた時には、
Link Binary With Libraries に、もう存在しない libPods.a が指定されている可能性があるのでここをチェック。