質問: のREADMEには、 > > With Carthage, RxKeyboard only supports binary installation: > > > Carthageの場合、バイナリーインストールのみサポートとあります。 Carthageの仕組みをあまり把握していないのですが、 ``` $ carthage update --platform ios --cache-builds --no-use-binaries ``` とした場合、 `--cache-builds`の意味は`ビルド済みのライブラリはスキップ` `--no-use-binaries`の意味は`そうでないライブラリはソースからコンパイル` と考えました。 ここで疑問なのですが、バイナリーインストールのみサポートとはどういうことなのでしょうか? なぜGitHubにソースコードがあるにもかかわらず、バイナリーを私達のローカルマシーンで作り出すことができないのでしょうか? 今回の質問は、どちらかというと`RxKeyboard`の`Carthage`について**ということではなく**、 より一般的に**Carthageにおけるソースコードとバイナリーの関係性**について教えていただきたいと考えております。
回答: RxKeyboardのリポジトリにはXcodeプロジェクトファイル(`*.xcodeproj`)が存在しないからです。 CarthageはCocoaPodsやSwift Package Managerと異なり、ビルド設定はXcodeプロジェクトの仕組みをそのまま利用します。 (CocoaPodsはPodspecの内容からXcodeプロジェクトファイルを生成してビルドするし、Swift Package Managerは標準ではXcodeプロジェクトファイルを使用しません。) 他のパッケージマネージャと異なり、Carthageは独自のビルドシステムを持たず、主な役割はパッケージ間の依存関係の解決のみを行います。 そのため、Xcodeプロジェクトファイル(`*.xcodeproj`)がリポジトリにコミットされてない以上、Carthageは依存関係を解決して、リポジトリをチェックアウトするところまではできますが、ビルドすることはできません。 それが、このプロジェクトではCarthageはバイナリインストールのみ、ソースコードからのビルドはサポートされていない理由です。