Help us understand the problem. What is going on with this article?

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のバージョンが違う状態でライブラリをインポートしないように気をつける。

mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away