なんだこれ
今日xcodeを10.1から10.2.1にあげたのですが、コンパイルが通らなくなったので忘却録で残します。
で、google先生に翻訳をお願いすると
Swift 4.2.1でコンパイルされたモジュールは、Swift 5.0.1コンパイラーではインポートできません:・・・・
とのこと。
コンパイラが違うよ!ダメだよ!とのこと。いいじゃん別に!(ダメです)
なのでちゃんとどっちかに合わせる必要がありそうです。
コマンドラインに使うToolを確認
Xcode→preference→Locationsの
Command Line Toolsを合わせます。
Charthageでupdateの前に
じゃあ早速carthageをと行きたいところですが、その前にcarthageのバージョンを確認しましょう。
例えば普通に
carthage update --platform iOS
と実行すると下のようなエラーになリました。
*** Downloading RxSwift.framework binary at "[4,5]"
*** Skipped installing RxSwift.framework binary due to the error:
"Incompatible Swift version - framework was built with 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3) and the local version is 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)."
Falling back to building from the source
これはリモートブランチにあなたのxcodeで使えるバージョンのバイナリがないよ!!って言っています。
ので、こういう場合はローカルでビルドしてバイナリを作る必要がありますが、
Charthageのversion0.20からはSwiftのバージョンが異なる場合ビルドしてくれるそうです。👍(連打!!)
なので、Charthageをversion0.20以上にあげておきましょう。
Charthageでupdateだー
--no-use-binariesオプションを指定してあげると、できているバイナリを使わないでビルドし直してくれます。
👍(連打!!)
carthage update --platform iOS --no-use-binaries
エラーなくなった!
終わりに
普段何気なく使ってるCarthageですが、versionで色々できることとか増えてるのでちゃんと調べないと駄目だなあと改めて実感しました。壁に当たって乗り越えて成長ですね。(よく当たるんですがw)
参考
大変おせわになりました。
https://qiita.com/kokoheia/items/7d3c2107d281316173be
https://doroidpanic.com/xcode10-2-10e125%E3%81%AB%E3%81%97%E3%81%9F%E3%82%89carthage%E3%81%A7incompatible-swift-version/