7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unreal Engine (UE)Advent Calendar 2023

Day 1

【UE5/UE4】C++ビルド時の"[Upgrade]"ログについて

Last updated at Posted at 2023-11-30

はじめに

この記事では、C++を使用した Unreal Engine 5/4(以下UEと表記)プロジェクトでビルドをする際に出力されるログのうち、表題の"[Upgrade]"ログについて軽く解説します。

この記事に対応するバージョンについて

UE5.3をベースに紹介しますが、過去バージョン(UE4時代まで)に遡っても通用する内容がほとんどです。
また、Visual Studio ビルド環境にて記事を作成していますが、記事内の範囲ではコンパイラや OS などの環境によって変化はありません。

対象読者

コードプラグイン開発や UE のバージョンアップに対応したいプロジェクト等、 UE の C++ プロジェクトで開発している方

この記事で紹介しないこと

  • ツールチェインやコンパイラなどの導入・更新方法
  • C++プロジェクトファイルの生成方法
  • UBT について
  • ターゲットファイル(*.target.cs)、ビルドファイル(*.build.cs)の書き方

本題

C++プロジェクトをビルドする際に以下のような領域が出力されることがあります。

以下の例はデフォルトで作成されたC++プロジェクトをビルドした際のログです。
過去の環境からバージョンを上げてきたプロジェクトなどでは内容が異なる場合があります。

[Upgrade]
[Upgrade] Using backward-compatible include order. The latest version of UE has changed the order of includes, which may require code changes. The current setting is:
[Upgrade]     IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_0
[Upgrade] Suppress this message by setting 'IncludeOrderVersion = EngineIncludeOrderVersion.Latest;' in MyProject53Editor.Target.cs.
[Upgrade] Alternatively you can set this to 'EngineIncludeOrderVersion.Latest' to always use the latest include order. This will potentially cause compile errors when integrating new versions of the engine.
[Upgrade]

これは UBT による出力で、使用している現在の UE のバージョンに合わせた設定を推奨しているログとなります。

UE のバージョンによって C++ ビルドを行う際に行われる( UBT による)プリプロセスが異なっていることがあり、この領域ではそれを説明されています。

原則としてこの推奨設定に従わなくてもよく、実行の挙動に変化が起こることは殆どありません。

しかし、推奨設定に従うことで C++ ビルドの速度が早くなるなどの恩恵が得られるため、基本的には推奨設定に従うのが良いでしょう。
ですが、インクルードファイルパスの扱いやインクルード順序の変化などに起因するコンパイルエラーが発生する場合もあるため、既存のプロジェクトにて対応する場合は注意してください。

基本的な対応方法

上記のログでは「MyProject53Editor.Target.csIncludeOrderVersion = EngineIncludeOrderVersion.Latest; を記述してください」とあります。
これはそのまま MyProject53Editor.Target.cs へ追記することでこの領域は表示されなくなります。
基本的に記載されている指示に従うだけで OK です。簡単ですね。

プロジェクトには MyProject53.Target.cs もありますが、こちらはパッケージビルド時に使用されるファイルで、基本的にこちら側にも同様に追記する必要があります。

その他のケースなど

設定が競合した場合

ターゲットファイル及びビルドファイルには様々なビルドオプションを記述可能ですが、設定によっては別のビルドオプションと競合し、それが"[Upgrede]"ログとして出る場合があります。

この場合もログに従って修正する必要がありますが、もちろんそのままでも殆どの場合競合した片方の設定が無視されビルドは通ります。

推奨設定に切り替えるとエラーが出る場合

開発環境によっては推奨設定ではエラーが発生する場合があるようです。(私はコンパイラがスタックオーバーフローエラーを起こした例があります)
大抵の場合はコンパイラやツールチェインのバージョンを更新することで解消しますが、どうしても解消しない場合は DefaultBuildSettings の値を変えるなど、過去の最適化設定に切り替えることで対応出来る場合があります。(もちろん"[Upgrede]"ログの催促がでますが…)

ビルドログの最初の数行に使用されるツールチェインやコンパイラのバージョンが出力されます。
公式ドキュメントの対象バージョンのリリースノートや開発のセットアップに対象(互換性のある)バージョンの記載があるのでそれに合わせて更新対応を行ってください。

さいごに(余談)

今年もアドベントカレンダーに参加できましたが、実はネタを持って参加したわけではなかったため内容がちょっと薄いです。
まぁ1日目の記事ということで…

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?