なんかCocoaPodsのバージョン上げてPodsを入れなおしたらビルドが通らなくなった。どうやらPods.xcconfigから参照していたPODS_BUILD_HEADERS_SEARCH_PATHSやPODS_PUBLIC_HEADERS_SEARCH_PATHSが消えてしまいヘッダファイルが見つけられなくなっている。
Integrating with an Xcode projectを確認。CocoaPodsではビルド設定を Pods/Pods.xcconfig に作成して、それをアプリケーションプロジェクトに設定する。
これが正しく適応されているかは、
- PROJECT が Pods.xcconfig を使っているか
- TARGET が PROJECT の設定を継承しているか
をチェックする。
PROJECTがPods.xcconfigを使っているか
Pods.xcconfigが使われているかは PROJECTの Info > Configrations の Based on Configuration File を見ればわかる。これが Pods になっていればok。
TARGETがPods.xcconfigの設定を使っているか
次に Pods.xcconfig の中身からビルド設定を確認する。
コンパイルが失敗する場合はPods.xcconfigのHEADER_SEARCH_PATHSが、リンクが失敗する場合はLIBRARY_SEARCH_PATHS、OTHER_LDFLAGSが適切に設定されていないおそれがある。
例えばTARGETの Build Settings で 直接 Header Search Paths を設定していると PROJECT(Pods.xcconfig)の値が使われないのでヘッダファイルを探せなくなる。この場合はPROJECTの設定を引き継ぐように $(inherited)
を追加する。
同様にLIBRARY_SEARCH_PATHSが使われているなら Library Search Pathsを 、OTHER_LDFLAGSが使われているなら Other Linker Flags の値に $(inherited)
を追加する。
今回ハマッたようにTARGETでは直接Pods.xcconfigの変数を使わずにPROJECTを継承した方が無難。