酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

CocoaPods経由でRealm 0.98.3をインストールすると'impl/async_query.hpp'が見つからないとエラーが出てしまう

今までとは別のプロジェクトにアサインされたので、いつものように開発環境を整えようとpod installをしてRealmをインストールしようとしたところ、謎のエラーが出てビルドができなくなりました。

謎のエラーとは'impl/async_query.hpp' file not find.というコンパイルエラーです。

実際にPodsディレクトリのソースファイルをみてみると*.hppがありませんでした。

さすがにRealmチームがビルドの通らないモノにバージョンをつけて配布したりしないだろうと思い検索したところ同じ現象が発生している方を何人か見つけました。

解決方法

解決したので解決方法を上の方に書いておきます。

直接的な原因はわかりませんがここ最近CocoaPodsの調子が悪くインストールに物凄く遅かったので、CocoaPods内部のキャッシュが異常な状態になっていたのではないかと思います。

CocoaPods自体のキャッシュを削除して、プロジェクト直下のPodsディレクトリを削除して、再度pod installをおこないました。

$ rm -rf ~/Library/Caches/CocoaPods/
$ rm -rf Pods
$ pod install

僕の環境では、この対応でRealmがエラーを出すことがなくなりました。

以下、エラーが出ている間に試したことを順番に書いています(あまり有益な情報はありません)。

経緯

Realmでコンパイルエラーが発生した時点でのPodfile.lockは下記のようになっていました。

PODS:
  - Realm (0.98.3):
    - Realm/Headers (= 0.98.3)
  - Realm/Headers (0.98.3)
  - RealmSwift (0.98.3):
    - Realm (= 0.98.3)
  - Result (1.0.2)

SPEC CHECKSUMS:
  Realm: c6a7d00221a2d5177810a674aebd40c5e0b70b0f
  RealmSwift: d6ecad6e4c2a645d6ac956c2c7e9efb375f39c31
  Result: dd3dd71af3fa2e262f1a999e14fba2c25ec14f16

こんなツイートが話題になっていました。

そういえば前回pod installした時にものすごく時間が掛かったので影響を受けているような気がします。念のため、CocoaPodsのキャッシュを削除しました。

$ rm -rf ~/Library/Caches/CocoaPods/
$ rm -rf Pods

この状態でログ出力させてpod install --verboseをしてみました。

-> Installing Realm (0.98.3)
 > Git download

(中略)

 > Running prepare command
   $ /bin/bash -c  set -e sh build.sh cocoapods-setup
   core is not a symlink. Deleting...
   Downloading dependency: core 0.96.2

ここまで出て15分くらい止まったままになっています。

(追記)そこから10分くらい待っていたらインストールが終わりました。普通にビルドができるようになりました。