Swift2.3でビルドエラーになったCarthageライブラリのビルドを通す方法


Xcode8ではUse Legacy Swift Language VersionというBuild Setting ができようになり、Yesを指定するとSwift2.3でビルドされるようになります。
Swift2.3にして後からSwift3に対応していくという場合に有効です。

Carthageで入れているライブラリがビルドエラー

ただこのままだとプロジェクト内のコードはSwift2.3でビルドされるようになりますが、Carthageを使ってライブラリを入れている場合に
Module file was created by an older version of the compiler; rebuild 'Library' and try again:というエラーが起きてしまいます。

Carthageで使ったライブラリをビルドした時のSwiftバージョンが、今使っているXcodeのSwiftバージョンより古いので起きているようです。

Carthageで入れたライブラリをSwiftバージョンを指定してビルドする

carthage bootstrapもしくはcarthage updateの前にTOOLCHAINS=com.apple.dt.toolchain.Swift_2_3とSwiftバージョンを指定する方法を使って
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrapとすることで、
Swift2.3でCarthageで入れたライブラリのビルドが可能になります

さいごに

使用ライブラリによってはソース自体がSwift2.3に対応できてなかったりするので、他の理由でビルドできないライブラリは個別にリポジトリのIssueやPRを確認してみましょう。
2.3でリポジトリ内を検索してみると、だいたい知りたい情報が出てきます。

「Swift2.3対応するのにもっといいやり方知っているよ!」という方がいれば、ぜひ教えてください!