注意
この記事は「ビルドターゲットが合っているはずなのにエラーが消えない!」という場合の記事ですので,そもそもビルドターゲットを間違っていた場合はそれを正しく直せばこのエラーは消えると思います.
いきさつ
Carthageを使ってとあるライブラリ(Result)を導入していざコーディング! ってときにimport Result
している箇所でタイトルのようなエラーを吐かれ,路頭に迷っていました.
要は「(使おうとしている)モジュールファイルは互換性のないターゲット(プラットフォーム)向けにビルドされてますよ」というエラーなので,ターゲットを確認した上でもう一度モジュールをビルドし直したり,Clean
した上でBuild
し直したりといろいろ試してみたのですが,なかなかエラーが消えませんでした.
ちなみに,このときのエラー文言全体は次の通り
Playground execution failed: error: module file was created for incompatible target x86_64-apple-macosx10.9
このときはターゲットをiOSにしていたのですが,確実にiOS用のモジュールを追加しているはずだったので,「macosx10.9向けにビルドされているよ」と言われても当初は何がなんだかでした.Playgroundでやっているのは気にしないでください.
解決法
/Users/hoge/Library/Developer/Xcode/DerivedData/
以下を一旦削除しましょう.
このディレクトリ以下にはXcodeによって生成されたビルドログとかバイナリとかが格納されているのですが,とりあえずこれらを全て削除しちゃいます.
全て削除しなくても,今回問題となっているプロジェクト関連のディレクトリだけ削除しても大丈夫だと思います(むしろそっちの方がいいかも).
原因
おそらく,モジュールを追加する過程でiOS用を追加したり削除したり,OSX用を追加したり削除したり,はたまたビルドし直したりいろいろと変な手順を踏んでしまったため,Xcodeが混乱してしまったのだと思います(ゆるふわ表現).