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

2014.05.18

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

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

cocoapods-inherited02

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

cocoapods-inherited03

まとめ

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