[iOS][CocoaPods] Pods.xcconfig の HEADER_SEARCH_PATHS に $(inherited) を追加する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

HEADER_SEARCH_PATHS に $(inherited) がない

今回は CocoaPods に関する小ネタです。

ここ最近 Cocos2d-x の環境構築をしているのですが、Cocos2d-x のスクリプトで生成したプロジェクトに CocoaPods を導入すると、どうもビルドが上手くいきませんでした。

cocoapods-inherited01

ビルドの失敗の原因は、CocoaPods が生成する Pods.xcconfig で設定されている HEADER_SEARCH_PATHS$(inherited) が入っていないためでした。

プロジェクトの設定は「Project の設定」→「Pods.xcconfig の設定」→「Target の設定」の順に設定されていきます。Cocos2d-x のヘッダーを検索する設定は Project の設定にありますので、Pods.xcconfig で引き継がれないと Target では読み込むことができず、エラーが発生してしまいます。

cocos2dx-3-cocoapods02

以上のことから、Pods.xcconfigHEADER_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 [/ruby]

これで pod install を実行してみます。すると Pod.xcconfig には…

cocoapods-inherited02

おぉ、追加されました!ビルドも無事に通ります。

cocoapods-inherited03

まとめ

今回はたまたま Cocos2d-x の環境構築で必要になっただけなので、すべての Xcode プロジェクトで Pods.xcconfig$(inherited) を追加する必要性はありません。ですが、どこかで必要な場面がきっとあるはず…ということで共有しました。誰かの参考になれば幸いです!