[解決済み] XcodeプロジェクトとXcodeワークスペースの比較 - 違い
質問
のエコシステム全体がどのように機能しているかを理解しようとしています。
iOS
が動作します。
今までは、私の質問のほとんどに答えが見つかりましたが(信じてください、たくさんの質問がありました)、この質問については、まだ明確な答えがないようです。
XcodeProjectとXcodeWorkspaceのファイルの違いは何ですか?
- この2つの違いは何ですか?
- 彼らは何を担当しているのですか?
- チームまたは単独でアプリを開発する場合、どの人と一緒に仕事をすればいいのでしょうか?
- この2つのファイルについて、他に注意すべきことはありますか?
解決方法は?
プロジェクトの構成について、理解すべき重要な項目は3つあると思います。 目標 , プロジェクト および ワークスペース . ターゲット は、製品/バイナリ(アプリケーションやライブラリなど)のビルド方法を詳細に指定します。コンパイラやリンカのフラグなどのビルド設定も含まれ、どのファイル(ソースコードやリソース)が実際に製品に含まれるかを定義します。ビルド/実行時には、常に特定のターゲットを1つ選択します。
コードとリソースを共有するいくつかのターゲットがある可能性があります。これらの異なるターゲットは、アプリのわずかに異なるバージョン(iPad/iPhone、異なるブランド、...)や、当然アプリと同じソースファイルにアクセスする必要があるテストケースになることがあります。これらの関連するターゲットは、すべて プロジェクト . プロジェクトはすべてのターゲットのファイルを含みますが、各ターゲットは関連するファイルのサブセットを独自に選択します。ビルドの設定も同じです。プロジェクトでプロジェクト全体のデフォルト設定を定義することができますが、ターゲットの1つが異なる設定を必要とする場合、いつでもそこでオーバーライドすることができます。
すべてのターゲットが継承する、オーバーライドしない限りは共有されるプロジェクト設定
具体的なターゲット設定。
PSE iPhone
は、プロジェクトの
Base SDK
設定
Xcodeでは、常にプロジェクト(またはワークスペース、ただしターゲットではない)を開き、それが含むすべてのターゲットをビルド/実行することができますが、プロジェクトをビルドする方法/定義はありません。
実行するプロジェクトのターゲットを1つ選択する
多くの場合、プロジェクトがあれば十分です。もし、ソースからビルドするような依存関係があるのであれば、それを サブプロジェクト . サブプロジェクトは、個別に開くことも、スーパープロジェクトの中で開くこともできます。
デモリブ はサブプロジェクト
サブプロジェクトのターゲットの一つをスーパープロジェクトの依存関係に追加すると、サブプロジェクトが変更されていない限り、自動的にビルドされます。ここでの利点は、同じXcodeウィンドウでプロジェクトと依存関係の両方のファイルを編集でき、ビルド/実行時に、プロジェクトとそのサブプロジェクトのターゲットから選択できることです。
しかし、あなたのライブラリ(サブプロジェクト)が他の様々なプロジェクト(正確にはそのターゲット)によって使用されている場合、同じ階層レベルに置くことは理にかなっています。 ワークスペース はそのためのものです。ワークスペースはプロジェクトを含み、管理し、それが直接含むすべてのプロジェクト(つまり、そのサブプロジェクトではない)は同じレベルにあり、それらのターゲットは互いに依存することができます(プロジェクトのターゲットはサブプロジェクトのターゲットに依存できますが、その逆はありません)。
ワークスペースの構造
この例では、両方のアプリ( AnotherApplication / ProjectStructureExample を参照することができます。 デモリブ プロジェクトのターゲットです。また、これは demoLib プロジェクトはサブプロジェクトとして他の両方のプロジェクトに含まれていますが(これは参照だけなので重複する必要はありません)、相互依存関係がたくさんある場合は、ワークスペースがより理にかなっています。ワークスペースを開いておけば、ビルド/実行時にすべてのプロジェクトのターゲットから選択することができます。
プロジェクトファイルを個別に開くことはできますが、ワークスペースファイルを開かないとXcodeが依存関係を解決できないため、ターゲットがビルドされない可能性があります。ワークスペースは、サブプロジェクトと同じような利点を与えてくれます。依存関係が変更されると、Xcodeはそれを再構築して最新であることを確認します(ただし、これにはいくつかの問題があり、確実に機能するとは思えません)。
ご質問を簡単にまとめると :
1) プロジェクトには、ファイル (コード/リソース)、設定、およびそれらのファイルや設定から製品を構築するターゲットが含まれています。ワークスペースには、相互に参照できるプロジェクトが含まれます。
2) どちらもプロジェクト全体を構造化する役割を担っていますが、そのレベルは異なっています。
3) ほとんどの場合、プロジェクトで十分だと思います。特別な理由がない限り、ワークスペースは使わないでください。それに、プロジェクトは後からいつでもワークスペースに埋め込むことができます。
4) 上の文章はそのためのものだと思うのですが・・・。
3)の発言は1つです。
CocoaPods
サードパーティライブラリを自動で処理するWorkSpaceは、ワークスペースを使用します。従って
CocoaPods
(多くの人がそうしています)。
関連
-
[解決済み】Xcode 10 Error: 複数のコマンドが生成される
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
[解決済み] xcode-select active developer directory エラー
-
[解決済み] Xcode 4で「既存のフレームワークを追加」する方法は?
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] Xcode DMGまたはXIPファイルをダウンロードする方法は?
-
[解決済み] Xcode プロジェクトのための Git 無視ファイル
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み】Xcodeのプロセス起動に失敗しました。セキュリティ
-
[解決済み] Xcode5の*.xccheckoutファイルは、VCSで無視されるべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
原因究明:画像が見つからない
-
[解決済み] macOSアップデート後、Gitが動作しない(xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
-
[解決済み] Xcodeコマンドラインツールのインストール方法
-
[解決済み] XcodeプロジェクトとXcodeワークスペースの比較 - 違い
-
[解決済み] Xcodeエディターでフォントサイズを大きくするには?
-
[解決済み】Xcode。ターゲットとスキームとは、わかりやすく言うと?
-
[解決済み] Xcode5の*.xccheckoutファイルは、VCSで無視されるべきですか?
-
[解決済み] XcodeでLLDBを使用してデバッグ中に変数の値を変更するにはどうすればよいですか?
-
[解決済み] Snow LeopardのXcode 4.2でiOS 5.1 SDKを入手することは可能でしょうか?
-
[解決済み] 特定のブランチからPodをインストールするには?