ビルドフェーズ は、ターゲットをビルドするときに実行されるタスクを定義します。
ビルドフェーズを表示するには、プロジェクトエディタを開き、[ビルドフェーズ(Build Phase)] をクリックします。エディタに表示されないビルドフェーズを追加するには、[追加(Add)] ボタン (+) をクリックし、ポップアップメニューからビルドフェーズを選択します。
異なるビルドフェーズは以下のとおりです。
フェーズ | 説明 |
ソースをコンパイル | Swift、Objective-C、Lex、Yacc などのコンパイル可能なソースファイルをターゲットに関連付けてコンパイルします。必要に応じて、ソースファイルごとにコンパイラフラグを指定できます。このフェーズはターゲットごとに 1 回使用でき、Aggregate および External Build Tool ターゲットではサポートされていません。 |
バンドルリソースのコピー | リソースをターゲットに関連付け、必要に応じて処理し、プロダクト内のリソースサブフォルダーにコピーします。このフェーズは、ターゲットごとに 1 回使用でき、ターゲットのプロダクトが組み込みリソースをサポートする場合にのみ使用できます。 |
ファイルをコピー | 他のターゲットのプロジェクトファイルとプロダクトをターゲットに関連付けし、必要に応じてコード署名し、指定した宛先 (通常はプロダクト内のサブフォルダー) にコピーします。このビルドフェーズは、すべてのビルドに対して、またはインストールビルド中にのみ有効にすることができます。このフェーズは、ターゲットごとに複数回使用できます。 |
ヘッダ | public、private、またはプロジェクトのヘッダファイルをターゲットに関連付けます。public ヘッダと private ヘッダは、他のクライアントによる使用を目的とした API を定義し、インストールのためにプロダクトにコピーされます。たとえば、フレームワークターゲット内の public ヘッダと private ヘッダは、プロダクト内のヘッダおよびプライベートヘッダのサブフォルダ内にコピーされます。プロジェクトヘッダは、ターゲットによって使用およびビルドされた API を定義しますが、プロダクトにはコピーされません。このフェーズは、ターゲットごとに 1 回使用できます。 |
ライブラリとバイナリをリンク | Apple フレームワークなどのライブラリをターゲットに関連付けます。これらは、プラットフォームライブラリ、他のターゲットによって作成されたライブラリ、または外部の事前にビルドされた XCFrameworks およびライブラリです。ライブラリは、必須またはオプションとして指定できます (弱いリンク-つまり、ライブラリが存在しなくてもあなたのアプリが引き続きロードするようにリンクされている)。このフェーズはターゲットごとに 1 回使用でき、Aggregate および External Build Tool ターゲットではサポートされていません。 Mac Catalyst を使用して iPad アプリの Mac バージョンをビルドする場合、フレームワークまたはライブラリのプラットフォームを選択できます。 |
スクリプトを実行 | ビルドプロセス中に、指定されたシェルスクリプトを実行します。このスクリプトは、ターゲットのソースファイルを含むディレクトリである $(SRCROOT) などのターゲットからのビルド設定を参照できます。このビルドフェーズではまた、入力ファイルと出力ファイルのリストをあなたに提供することもできます。スクリプトは、入力ファイルと出力ファイルが提供されていないときに常に実行します。入力ファイルと出力ファイルが指定されている場合、スクリプトは、これまで実行されたことがない、入力ファイルの 1 つが変更されている、または出力ファイルの1つが欠落している場合にのみ実行されます。このビルドフェーズは、すべてのビルドで有効にすることもでき、インストールビルド中にのみ有効にすることもでき、ターゲットごとに複数回追加する事もできます。 |
ターゲットの依存関係 | 同じプロジェクト内にあるか (同じワークスペース内にはない) またはリンクされたプロジェクトで、ターゲット自体をビルドする前にビルドしなければならない他のターゲットを明示的に指定します。たとえば、プロジェクト内の別のフレームワークに依存するターゲットは、通常、そのフレームワークのターゲット依存関係で構成されます。Xcode はいくつかの依存関係を暗黙的に推測しますが、このビルドフェーズでは、依存関係とそのビルド順序をより詳細に制御できます。 |