XcodeでSwiftコードをビルドしたときに、Command SwiftCompile failed with a nonzero exit code と表示されてビルドが停止することがあります。このメッセージ自体はSwiftコンパイラ処理が失敗したことを示す総括的なエラーで、実際の原因は直前に出ているコンパイルエラー、依存関係、Swiftバージョン、キャッシュなどにあることが多いです。
原因
- Swiftコードの構文エラーや型不一致
- 存在しない型・関数・モジュールの参照
- Swift Package ManagerやCocoaPodsなど依存関係の不整合
- SwiftバージョンやDeployment Targetの不一致
- DerivedDataやModule Cacheの破損
- ビルド設定や条件付きコンパイル設定の不整合
代表的な発生状況
Swiftファイルを編集した直後、Xcodeを更新した後、ライブラリを追加・更新した後、別のMacやCI環境でプロジェクトを開いたときなどに発生しやすいエラーです。
Command SwiftCompile failed with a nonzero exit code
確認手順
- Issue NavigatorまたはBuild Logを開き、このメッセージより前に表示されている最初のSwiftエラーを確認します。
- エラー対象のSwiftファイルと行番号を確認します。
- TargetのBuild SettingsでSwift Language VersionやDeployment Targetを確認します。
- 外部依存関係を利用している場合は、パッケージやPodsが正しく解決されているか確認します。
解決方法1:直前のSwiftコンパイルエラーを修正する
このエラーは結果として表示されることが多いため、ログを上にたどり、最初に出ている具体的なエラーを修正します。たとえば型不一致なら、宣言と代入値の型を一致させます。
let count: Int = 10
// let count: Int = "10" // 型不一致
解決方法2:Clean Build FolderとDerivedDataを整理する
XcodeのProductメニューからClean Build Folderを実行します。改善しない場合はDerivedDataを削除して再ビルドします。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
解決方法3:Swift Package Managerの依存関係を再解決する
Package Dependenciesを使っている場合は、Xcodeからパッケージの解決やキャッシュリセットを行います。コマンドラインではプロジェクト構成に応じて次のように確認できます。
xcodebuild -resolvePackageDependencies
解決方法4:CocoaPodsを再構築する
CocoaPods利用時はPodsの状態を更新し、必ず.xcworkspaceから開きます。
pod install --repo-update
解決方法5:Swiftバージョンとビルド設定を確認する
TargetのBuild SettingsでSwift Language Version、iOS Deployment Target、Active Compilation Conditionsなどを確認します。古いライブラリを新しいSwift環境で使っている場合は、ライブラリ側の対応バージョンも確認してください。
注意点:「Command SwiftCompile failed with a nonzero exit code」だけを見ても原因は特定できません。ログの最初の具体的なSwiftエラーを優先して確認してください。DerivedData削除は生成物を消すだけですが、次回ビルドには時間がかかる場合があります。
まとめ
このエラーはSwiftコンパイル処理が失敗したことを示す総括メッセージです。まず直前の具体的なコンパイルエラーを確認し、その後にClean Build Folder、DerivedData、依存関係、Swiftバージョン、ビルド設定の順で切り分けると解決しやすくなります。
