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