Edited at

CarthageでライブラリをビルドしたらModule compiled with Swift 4.1.2 cannot be imported by the Swift 4.2 compilerというエラーが出た。

More than 1 year has passed since last update.


この記事について

Xcode10とXcode9.4.1を使い分けつつ、Carthageを使ってライブラリをビルドしていたら以下のようなエラーが出た。その時の対処法のメモ。

Module compiled with Swift 4.1.2 cannot be imported by the Swift 4.2 compiler....


原因

TargetのBuild SettingsでSwift Language Versionを確認すると4.2となっているので、プロジェクト自体はSwift4.2でコンパイルされている模様。しかし、Command Line Toolsを確認すると、Xcode9.4.1となっており、Swift4.1.2でBuildされていた。

すなわち、ターミナルからライブラリをCarthageでBuildしたときに、Swift 4.1.2のモジュールでBuildしてしまっていたのが原因だった。


解決法


  1. Xcode > Preference > Locationsを開きCommand Line Toolsから、Xcode10を選択。

    スクリーンショット 2018-10-15 20.31.45.png


  2. この状態で、ターミナル上で以下をもう一度実行


$ carthage update --platform iOS

3.再びプロジェクトをビルドしたら無事に成功した。


まとめ

複数のSwiftのバージョンが切り替わりうる環境で開発しているときは、プロジェクトBuild用のSwiftのバージョンCommand Line ToolsのSwiftのバージョンが違う状態でライブラリをインポートしないように気をつける。