Xcode ワークスペース
ワークスペースは、グループのプロジェクトや他の文書、あなたが一緒に作業することができる Xcode のドキュメントです。ワークスペースは、Xcode プロジェクトをいくつでも、プラス含めたい他のファイルをいくつでも含めることができます。各 Xcode プロジェクト内のすべてのファイルを組織することに加えて、ワークスペースは、含まれるプロジェクトとそのターゲット間の暗黙的および明示的な関係を提供します。
ワークスペースはワークフローの範囲を拡張
プロジェクトファイルは、ビルド構成や他のプロジェクト情報とともに、プロジェクト内のすべてのファイルへのポインタを含んでいます。Xcode 3 以前では、プロジェクトファイルは、常にグループおよびファイル構造の階層のルートです。プロジェクトは他のプロジェクトへの参照を含めることができますが、Xcode 3 で相互に関係するプロジェクトに取り組むのは複雑です。ほとんどのワークフローは、単一のプロジェクトに限定されています。 Xcode 4 以降では、1つ以上のプロジェクトを持つことに加え、あなたが含めたい他のファイルを保持するワークスペースを作成するオプションがあります。
Xcode プロジェクトに含まれる各々のすべてのファイルへのアクセスを提供することに加えて、ワークスペースは、多くの重要な Xcode のワークフローの適用範囲を拡張します。例えば、インデックス作成は、全ワークスペース、コード補完、定義へのジャンプ、他のすべての内容を意識した機能を横切って行われるため、ワークスペース内のすべてのプロジェクトを通じてシームレスに動作します。リファクタリング操作は、ワークスペースのすべての内容を横切って行なわれるので、あなたは、フレームワークプロジェクト内やそのフレームワークを使用するいくつかのアプリケーション・プロジェクトで、すべて一回の操作で API をリファクタリングできます。ビルドする場合、一つのプロジェクトは、ワークスペース内の他のプロジェクトの製品を利用できます。
ワークスペースドキュメントは含まれるプロジェクトや他のファイルへのポインタを含みますが、それ以外のデータは含みません。プロジェクトは、1つ以上のワークスペースに属すことができます。以下の図は、2つの Xcode プロジェクト (スケッチ(Sketch)とテキストエディット(TextEdit)) にドキュメントプロジェクト (Xcode4TransGuideDocPlan) を加えたものを含むワークスペースを示しています。
ワークスペース内のプロジェクトはビルドディレクトリを共有
デフォルトでは、ワークスペース内のすべての Xcode プロジェクトは、ワークスペースのビルドディレクトリ と呼ばれる、同じディレクトリにビルドされます。各ワークスペースは、独自のビルドディレクトリを持っています。ワークスペース内のすべてのプロジェクト内のすべてのファイルが同じビルドディレクトリにあるので、これらのすべてのファイルは、各プロジェクトに見えます。2つ以上のプロジェクトが同じライブラリーを使用する場合は、別々に各プロジェクトフォルダにそれらをコピーする必要はありません。
Xcode は、暗黙的な依存関係を見つけるために、ビルドディレクトリ内のファイルを調べます。例えば、ワークスペースに含まれる1つのプロジェクトが、同じワークスペース内の別のプロジェクトからもリンクされているライブラリーをビルドした場合、Xcode はビルド構成が、この依存関係を明示的にしない場合でさえも、他のプロジェクトをビルドする前に、ライブラリを自動的にビルドします。あなたは、必要に応じてこのような暗黙の依存関係を明示的なビルド設定でオーバーライドすることができます。明示的な依存関係の場合は、プロジェクトの参照を作成する必要があります。
ワークスペース内の各プロジェクトは、独自の独立したアイデンティティを持ち続けています。プロジェクトで作業する時影響されるか、影響されないかによって、ワークスペース内の他のプロジェクトは、ワークスペースを開かずにプロジェクトを開くこともできますし、別のワークスペースにプロジェクトを追加することもできます。プロジェクトは複数のワークスペースに属することができるので、プロジェクトやワークスペースのいずれかを再構成しなくても、組み合わせしたいくつの数でもプロジェクトに取り組むことができます。
ワークスペースのデフォルトのビルドディレクトリを使用するか、いずれかを指定することができます。プロジェクトがビルドディレクトリを指定する場合、そのディレクトリは、プロジェクトをビルドする時は、どんなワークスペース内にプロジェクトがあろうとも、ビルドディレクトリによってオーバーライドされることに注意してください。
関連記事
プロジェクト
ターゲット
ビルド設定