[iOS][CocoaPods] Pods.xcconfig の HEADER_SEARCH_PATHS に $(inherited) を追加する
HEADER_SEARCH_PATHS に $(inherited) がない
今回は CocoaPods に関する小ネタです。
ここ最近 Cocos2d-x の環境構築をしているのですが、Cocos2d-x のスクリプトで生成したプロジェクトに CocoaPods を導入すると、どうもビルドが上手くいきませんでした。
ビルドの失敗の原因は、CocoaPods が生成する Pods.xcconfig で設定されている HEADER_SEARCH_PATHS に $(inherited) が入っていないためでした。
プロジェクトの設定は「Project の設定」→「Pods.xcconfig の設定」→「Target の設定」の順に設定されていきます。Cocos2d-x のヘッダーを検索する設定は Project の設定にありますので、Pods.xcconfig で引き継がれないと Target では読み込むことができず、エラーが発生してしまいます。
以上のことから、Pods.xcconfig で HEADER_SEARCH_PATHS に $(inherited) を追加するようにすれば問題は解決しそうです。ということで、こちらを参考に Podfile に処理を追加してみました。
Podfile
target "SampleProject" do # プロジェクトに必要なOSSたち end post_install do | installer | # HEADER_SEARCH_PATHS に $(inherited) を追加する workDir = Dir.pwd xcconfigFilename = "#{workDir}/Pods/Pods-SampleProject.xcconfig" xcconfig = File.read(xcconfigFilename) newXcconfig = xcconfig.gsub(/HEADER_SEARCH_PATHS = "/, "HEADER_SEARCH_PATHS = $(inherited) \"") File.open(xcconfigFilename, "w") { |file| file << newXcconfig } end
これで pod install を実行してみます。すると Pod.xcconfig には…
おぉ、追加されました!ビルドも無事に通ります。
まとめ
今回はたまたま Cocos2d-x の環境構築で必要になっただけなので、すべての Xcode プロジェクトで Pods.xcconfig に $(inherited) を追加する必要性はありません。ですが、どこかで必要な場面がきっとあるはず…ということで共有しました。誰かの参考になれば幸いです!