INTSourceChangelist:2446922 Availability:Public Title:プロジェクトファイルの自動生成 Crumbs:%ROOT%, Programming, Programming/UnrealBuildSystem Description: 現ワークスペースでゲームやモジュールのプロジェクトファイルを自動生成するプロセス Version:4.5 最新のアンリアル・エンジン 4 のコードを既にダウンロードされたユーザーは、コンパイルやエンジンおよびサンプルゲームの実行に、Visual Studio や Xcode プロジェクトファイルが同梱されていないことにお気づきかもしれません。プロジェクトファイルはスクリプトを実行して生成する必要があります。 * UE4のメインディレクトリ (//depot/UE4/) にある `GenerateProjectFiles.bat` ファイルを実行します。 [REGION:note] スクリプトはどのフォルダからも実行できます。(必要に応じてデスクトップ上にショートカットを作成してください) [/REGION] * プロジェクトジェネレータがモジュールとビルド対象のファイルを分析し、プロジェクトファイルを新規に生成します。ファイルの生成は最長で 15 秒間ほどかかります。 完了です ! Visual Studio 開発者のために、同ディレクトリに「UE4.sln」ファイルが生成されます。アンリアル・エンジン 4 を使用したゲームやプログラムのビルドおよび実行にこのソリューションファイルを使用します。(初回コンパイルは、Win64プラットフォームをDevelopmentコンフィギュレーションに設定したビルドを推奨しています!) [REGION:note] デフォルトで、コンソールだけでなくモバイルのプラットフォームもビルドおよびデバッグできるように、SDK が検出されたすべての利用可能なプラットフォームを対象にビルド可能なプロジェクトを生成します。実行している現在のプラットフォーム (例、Windows) に対してのみプロジェクトを生成したい場合は、'-CurrentPlatform' 引数で `GenerateProjectFiles.bat` を実行します。プロジェクト ファイルは若干負荷が軽くなります。 [/REGION] **重要**:ソースコントロールシステムから新しいコードの変更を同期した後は必ず `GenerateProjectFiles.bat` ファイルを再実行してください。ファイルの実行を忘れると、コンパイル時やゲームの実行時に問題が発生する恐れがあります。 ソースファイルの追加や削除など、モジュール内でローカルに変更を加えた場合も `GenerateProjectFiles.bat` ファイルを再実行してください。 手作業でプロジェクトファイルに変更を加えることは推奨しません。 ## UnrealVS 拡張との統合 Visual Studio 用の [](Programming/Development/VisualStudioSetup/UnrealVS) にあるツールバーボタンをクリックすると、現在読み込んでいるソリューションに対しプロジェクト ファイルが再度生成されます。 この機能へショートカットキーを割り当てることもできます。Visual Studio で Tools -> Options -> Environment -> Keyboard を開き `UnrealVS.RefreshProjects`を検索します。 この機能はソリューションが読み込まれた後に有効となります (プロジェクトを生成するコードブランチをツールで理解しなくてはいけないため)。`UE4.sln`ファイルがまだ生成されていない場合、最初に `GenerateProjectFiles.bat` スクリプトを直接実行してください。 ## コマンドライン オプション (上級編) プロジェクトジェネレータには任意のコマンドライン引数がいくつかあります。ユーザーのニーズにより近い生成ファイルにカスタマイズすることができます。一般的にこのオプションは必須ではありませんし推奨していません。 | オプション | 説明 || ----------------- | ------------ | -CurrentPlatform | 検出されたすべての利用可能な対象プラットフォームではなく、現在のデスクトップ プラットフォーム (Windows または Mac) に対してのみビルド可能なプロジェクトを生成します。 | -2012 | Visual Studio 2012 のネイティブなフォーマットでプロジェクトを生成します。デフォルトで、Visual Studio 2013 ファイルを生成します。 サードパーティ | サードパーティ ライブラリからヘッダとその他のファイルをプロジェクトに追加します。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) ### プロジェクトファイルを更新していなくても、新しく追加されたソースファイルがコンパイルされるのはなぜですか? アンリアル・エンジン 4 のビルドシステムでは、プロジェクトファイルが実際にコードをコンパイルする必要はありません。アンリアル ビルド ツールは、モジュールと対象のビルドファイルを使用してソースファイルを常に検索します。よって、新しいソースファイルが追加されてコンパイルが開始すると、プロジェクトファイルが再読み込みされていなくてもソースファイルがビルドに含まれます。覚えておいてください。 ### 実際のプロジェクトはどこに保存されるのですか? Visual Studio プロジェクトの場合、生成ソリューションは `UE4.sln` として UE4 のルートディレクトリに保存されます。ただし、プロジェクトファイルは「/UE4/Engine/Intermediate/ProjectFiles/」ディレクトリに保存されます。これらのファイルをいつ削除してもプロジェクトを再生成しても全く問題はありません。ただし、ファイルの削除時にコマンドライン引数などプロジェクト固有の設定が消去されます。 ### プロジェクトファイルを生成するメリットはなんですか? メリット、デメリットは確実に両方ありますが、UE4 でプロジェクトファイルを生成する決断に至った主な理由はいくつかあります。 * アンリアル・エンジン 4 はマルチプラットフォームに対応していますが、あるチームは常に特定のプラットフォームのみで開発を行っています。プロジェクトファイルを生成することにより、関連のないプラットフォーム固有のファイルやビルドコンフィギュレーションを省略することができます。 *UE4 のプログラミング手法はたくさんのサブモジュールを使用しているので、プログラマーが新たにモジュールを追加する作業を可能な限り容易にすることはとても重要でした。 *プロジェクトジェネレータは、正確性の高い定義を排出し、ユーザーがUE4 コードの作業中に Visual Studio IntelliSense が使用するパスを含みます。 * プロジェクトファイルの自動生成時に新プロジェクトの設定がより簡単になります。 * 当社はマルチプラットフォームと開発環境のサポートを目指しています (例えば VisualStudio や Xcode など)。手作業で複数のプロジェクトファイルを維持することはエラーを誘発する上に、単調でつまらない作業です。 * よって、プログラマーが大々的にカスタマイズ可能なプロジェクトファイルを生成したいと考えました。プロジェクトファイルの生成は、将来的により重要となってくると考えています。 * ソースファイルのディレクトリ構造は、プロジェクトファイル ソリューションの階層に自動的に反映されます。ソースファイルのブラウズが大変便利になりますが、手作業で作成するプロジェクトの維持はとても困難です。 * アンリアルエンジンのビルドコンフィギュレーションは非常に複雑で手作業による維持は困難です。プロジェクトジェネレータは、透明性を持つビルドコンフィギュレーションを開発者に提供します。 ### プロジェクトには他にどんなファイルが含まれますか? C++ モジュールのソースコードと一緒に、生成されるプロジェクトにはその他のファイルが自動的に追加されます。これらのファイルの簡単な検索が目的です。以下は生成プロジェクトへ自動的に追加されるファイルをいくつか挙げた例です。 *シェーダーソースコード (`*.usf` ファイル) * エンジン ドキュメンテーション ファイル (`*.udn` ファイル) * プログラム コンフィギュレーション ファイル (`*.ini` ファイル) * ローカライゼーションファイル (`*.int` ファイル) * プログラム リソースファイルとマニフェスト (`*.rc`, `*.manifest`) * 特定の外部 (非生成) プロジェクトファイル (例えば UnrealbuildTool や Clean) ### ソースコントロールにプロジェクトファイルがチェックインされないのはなぜですか? ソースコントロールのマージは、プロジェクトファイルとのコンフリクトが生じ、面倒な作業であるうえ大変間違いが起こりやすい作業です。新しいシステムは、プロジェクトファイルを純粋な中間ファイルとして捉えるためこの作業を完全に回避することができます。加えて、異なるゲームプロジェクトに従事している各チームはそれぞれのソリューションファイルが必要です。エピックで使用するプロジェクトファイルに修正を加えない限り、他のチームには実用性がないファイルとなる可能性が高くなります。 ### `GenerateProjectFiles.bat` は実際に何を実行するのですか? スクリプトは、アンリアルビルドツールまわりの簡易なラッパーです。プログラム実行ファイルの代わりに、プロジェクトファイルをビルドする特別なモードで起動されます。`-ProjectFiles` コマンドライン オプションでアンリアル ビルド ツールを呼び出します。 ### プロジェクト ジェネレータ コードに変更を加えています。デバッグ作業はどのように行うのでしょうか? * スタートアッププロジェクトを UnrealBuildTool に変更します。 * デバッグ作業のコマンドラインパラメータを `-ProjectFiles` に設定します。 * 作業ディレクトリをローカルパスへ設定します:`//depot/UE4/Engine/Source/` * 法線ごとにコンパイルおよびデバッグ作業を行います。 Visual Studio で使用しているプロジェクトファイルの作業中に、ファイルがプロジェクトジェネレータによって上書きされる恐れがあります。このため通常の UE4 ソリューションファイルでデバッグ作業をする代わりに、Visual Studio へ UnrealBuildTool プロジェクトを直接読み込むと便利な場合もあります。 ### 複数のコンフィギュレーションの一斉ビルドはをどうやってできますか? Visual Studio の `Batch Build` 機能を使用します。この機能は [Build] メニューにあります。コンパイル作業を行う全てのコンフィギュレーションを選択してビルドをクリックします。将来的により簡単な作業を可能とするインターフェースの作成に取り組んでいます。