INTSourceChangelist:3810557 Availability:Public Title:プロジェクトファイルの自動生成 Crumbs:%ROOT% Parent:Programming/UnrealBuildSystem Order: Description: 現在のワークスペースでゲームやモジュールのプロジェクトファイルを自動生成するプロセス Version:4.16 prereq:Programming/Development/BuildingUnrealEngine topic-image:topic_prjFileGen.png tags:Programming tags:Unreal Build System [TOC(start:1 end:2)] [REGION:warning] 以下のガイドは、GitHub で提供されているソースコードをダウンロードして、UE4 をビルドしたユーザー向けです。 [/REGION] 最新のアンリアル・エンジン 4 (UE4) のコードを既にダウンロードされたユーザーは、コンパイルやエンジンおよびサンプルゲームの実行に、Visual Studio (VS) や Xcode プロジェクト ファイルが同梱されていないことにお気づきかもしれません。プロジェクト ファイルはスクリプトを実行して生成する必要があります。 * UE4 のメイン ディレクトリにある GenerateProjectFiles.bat ファイルを実行します。 [REGION:note] スクリプトはどのフォルダからも実行できます。(必要に応じてデスクトップ上にショートカットを作成してください) [/REGION] * プロジェクト ジェネレータがモジュールとビルド対象のファイルを分析し、プロジェクトファイルを新規に生成します。ファイルの生成は最長で 15 秒間ほどかかります。 VS 開発者のために、同ディレクトリに「UE4.sln」ファイルが生成されます。UE 4 を使用したゲームやプログラムのビルドおよび実行にこのソリューションファイルを使用します。(初回コンパイルは、Win64 プラットフォームを Development コンフィギュレーションに設定したビルドを推奨しています) [REGION:note] デフォルトで、コンソールだけでなくモバイルのプラットフォームもビルドおよびデバッグできるように、SDK が検出されたすべての利用可能なプラットフォームを対象にビルド可能なプロジェクトを生成します。実行している現在のプラットフォーム (Windows など) に対してのみプロジェクトを生成したい場合は、-CurrentPlatform 引数で GenerateProjectFiles.bat を実行します。プロジェクト ファイルの負荷が若干低減されます。 [/REGION] **重要**:ソースコントロール システムから新しいコードの変更を同期した後は必ず GenerateProjectFiles.bat ファイルを再実行してください。ファイルの実行を忘れると、コンパイル時やゲームの実行時に問題が発生する恐れがあります。 ソースファイルの追加や削除など、モジュール内でローカルに変更を加えた場合も GenerateProjectFiles.bat ファイルを再実行してください。 手作業でプロジェクトファイルに変更を加えることは推奨しません。 ## UnrealVS 拡張との統合 VS 用の [](Programming/Development/VisualStudioSetup/UnrealVS) にあるツールバーボタンをクリックすると、現在読み込んでいるソリューションに対しプロジェクトファイルが再度生成されます。 この機能へショートカットキーを割り当てることもできます。VS で [Tools] -> [Options] -> [Environment] -> [Keyboard] を開きUnrealVS.RefreshProjects を検索します。 この機能はソリューションが読み込まれた後に有効となります(プロジェクトを生成するコードブランチをツールで理解しなくてはいけないため)。`UE4.sln` ファイルがまだ生成されていない場合、最初に `GenerateProjectFiles.bat` スクリプトを直接実行してください。 ## コマンドライン オプション (上級編) プロジェクトジェネレータには任意のコマンドライン引数がいくつかあります。ユーザーのニーズにより近い生成ファイルにカスタマイズすることができます。一般的にこのオプションは必須ではありませんし推奨していません。 | オプション | 説明 || ----------------- | ------------ | -CurrentPlatform | 検出されたすべての利用可能な対象プラットフォームではなく、現在のデスクトップ プラットフォーム (Windows または Mac) に対してのみビルド可能なプロジェクトを生成します。 | -2015 | VS 2015 のネイティブなフォーマットでプロジェクトを生成します。このオプションが設定されると Visual C++ 2015 コンパイラを使用してコンパイルします。 | -2017 | VS 2017 のネイティブなフォーマットでプロジェクトを生成します。このオプションが設定されると Visual C++ 2017 コンパイラを使用してコンパイルします。 | -ThirdParty | サードパーティ ライブラリからヘッダとその他のファイルをプロジェクトに追加します。PhysX、Steamworks、Bink などに対応する Visual Assist でシンボルやファイルを見る場合に便利です。ただし、プロジェクトファイルの読み込みに時間が長くかかります! | Game `GameName` | 指定したプロジェクト名に対するコードとコンテンツのみを含むプロジェクトの生成をプロジェクト ジェネレータに指示します。その他のプロジェクトは除外します。プロジェクト名も必ず指定してください。例えば、「GenerateProjectFiles.bat ShooterGame.uproject -Game 」はShooterGame のソースとターゲットのみを含むプロジェクトを生成します。単一のゲームプロジェクトと一緒にエンジンソースコードとプログラムを含みたい場合、「-Engine」パラメータを渡してください。| Engine | `-Game` と併用した場合、エンジンコード、コンテンツ、そしてプログラムが生成ソリューションに一緒に含まれます。エンジン ソースコードを扱う作業がたくさんあるゲームプロジェクトの開発に便利なオプションです。 | -NoIntelliSense | オートコンプリートとエラー squiggles で使用される IntelliSense データの生成をスキップします。 -AllLanguages | すべての言語のエンジン ドキュメンテーションが含まれます。デフォルトでは、プロジェクトには英語のファイルのみが含まれます。 | -OnlyPublic | 指定すると、パブリック ヘッダファイルのみが Engine モジュール用に作成されたプロジェクトにインクルードされます。デフォルトでは、すべてのソースファイルが Engine モジュールにインクルードされています。そのため、プロジェクトのロード時間は短くなりますが、エンジンコードの移行が難しくなる場合があります。| -NoShippingConfigs | 生成したプロジェクトから `Shipping` と `Test` のビルド設定を除外します。これによって処理する設定対象数が減ります。 | -Platforms=`PlatformName`| ビルド可能なプロジェクトを生成するデフォルトのプラットフォーム セットをオーバーライドし、代わりに指定したプラットフォームに対してプロジェクトを生成します。'+' 記号で区切ることで複数のプラットフォームを指定できます。この操作によって、生成されたソリューション ファイルには指定したプラットフォーム名を含む接尾辞がついた名前も付けられます。 | ## よくある質問(FAQ) ### プロジェクト ファイルを更新していなくても、新しく追加されたソースファイルがコンパイルされるのはなぜですか? UE 4 のビルド システムでは、プロジェクト ファイルが実際にコードをコンパイルする必要はありません。アンリアル ビルド ツールは、モジュールと対象のビルド ファイルを使用してソース ファイルを常に検索します。よって、新しいソースファイルが追加されてコンパイルが開始すると、プロジェクト ファイルが再読み込みされていなくてもソース ファイルがビルドに含まれます。覚えておいてください。 ### 実際のプロジェクトはどこに保存されるのですか? VS プロジェクトの場合、生成ソリューションは UE4.sln として UE4 のルート ディレクトリに保存されます。ただし、プロジェクト ファイルは「/UE4/Engine/Intermediate/ProjectFiles/」ディレクトリに保存されます。これらのファイルは、削除やプロジェクト再生成を好きな時に行えます。ただし、ファイルの削除時にコマンドライン引数などプロジェクト固有の設定が消去されます。 ### プロジェクトファイルを生成するメリットはなんですか? もちろんデメリットもありますが、プロジェクト ファイル生成に UE4 を選んだ主な理由は以下の通りです。 * UE 4 はマルチプラットフォーム対応なので、あるチームを特定のプラットフォーム専用の開発に割り当てることができます。プロジェクト ファイルを生成すれば、プラットフォーム固のファイルや関係のないビルド コンフィギュレーションを省略することができます。 * UE4 は幅広いサブモジュールを使用したプログラミング手法です。これは、プログラマーのモジュール新規追加作業をできるだけ簡素化する上でとても重要です。 * プロジェクト ジェネレータは、正確性の高い定義を排出し、UE4 コード作業中に Visual Studio IntelliSense が使用するパスを含みます。 * プロジェクトファイルの自動生成時に新プロジェクトの設定が非常に簡単です。 * マルチプラットフォームと開発環境のサポートしています (例えば VS や Xcode など)。手書きコードで複数のプロジェクトファイルを維持しようとすると、エラーを誘発する上に単調でつまらないです。 * プログラマーが大々的にカスタマイズ可能なプロジェクトファイルを生成したいと考えました。プロジェクトファイルの生成は、将来的により重要となってくると考えています。 * ソースファイルのディレクトリ構造は、プロジェクト ファイル ソリューションの階層に自動反映されます。ソース ファイルのブラウズが大変便利になりますが、手書きコードで作成したプロジェクトの維持はとても困難です。 * アンリアル エンジンのビルド コンフィギュレーションは非常に複雑で、手書きコードによる維持は困難です。プロジェクト ジェネレータは、透明性を持つビルド コンフィギュレーションを開発者に提供します。 ### プロジェクトには他にどんなファイルが含まれますか? C++ モジュールのソースコードと一緒に、生成されるプロジェクトにはその他のファイルが自動的に追加されます。これらのファイルの簡単な検索が目的です。以下は、生成プロジェクトへ自動追加されるファイルの例です。 * シェーダー ソースコード (*.usf ファイル) * エンジン ドキュメンテーション ファイル (*.udn ファイル) * プログラム コンフィギュレーション ファイル (*.ini ファイル) * ローカライゼーション ファイル (*.int ファイル) * プログラム リソース ファイルとマニフェスト (*.rc、*.manifest) * 特定の外部 (非生成) プロジェクト ファイル (例えば UnrealbuildTool や Clean) ### ソース コントロールにプロジェクト ファイルがチェックインされないのはなぜですか? ソース コントロールのマージは、プロジェクト ファイルとのコンフリクトが生じ、面倒な上、大変間違いが起こりやすい作業です。新しいシステムは、プロジェクトファイルを純粋な中間ファイルとして捉えるためこの作業を完全に回避することができます。加えて、異なるゲームプロジェクトに従事している各チームはそれぞれのソリューション ファイルが必要です。エピックで使用するプロジェクトファイルに修正を加えない限り、他のチームには実用性がないファイルとなる可能性が高くなります。 ### `GenerateProjectFiles.bat` は実際に何を実行するのですか? スクリプトは、アンリアル ビルド ツールまわりの簡易なラッパーです。プログラム実行ファイルの代わりに、プロジェクト ファイルをビルドする特別なモードで起動されます。`-ProjectFiles` コマンドライン オプションでアンリアル ビルド ツールを呼び出します。 ### プロジェクト ジェネレータ コードに変更を加えています。デバッグ作業はどのように行うのでしょうか? * スタートアップ プロジェクトを UnrealBuildTool に変更します。 * デバッグ作業のコマンドライン パラメータを `-ProjectFiles` に設定します。 * 作業ディレクトリをローカルパスへ設定します: [Your UE4 Directory]/Engine/Source/ * 法線ごとにコンパイルおよびデバッグ作業を行います。 VS で使用しているプロジェクト ファイルの作業中に、ファイルがプロジェクト ジェネレータによって上書きされる恐れがあります。このため通常の UE4 ソリューションファイルでデバッグ作業をする代わりに、VS へ UnrealBuildTool プロジェクトを直接読み込むと便利な場合もあります。 ### 複数のコンフィギュレーションの一括ビルドはどのようにしますか? Visual Studio の Batch Build 機能を使用します。この機能は [Build] メニューにあります。コンパイル作業を行うすべてのコンフィギュレーションを選択してビルドをクリックします。今後さらに作業が簡単になるようなインターフェースの作成に取り組んでいます。