アンリアルエンジンはC++で記述されており、Windows向けのビルドでは主にVisualStudioのコンパイラが使われます。
公式ドキュメントにUEのバージョンごとに対応したVisuaslStudioのバージョンに関して記載があります。
VisualStudioはとてもバージョンアップ速度が速く(ほぼ毎月更新があります!!)様々な機能追加やバグ修正がおこなわれています。基本的にはインストール時に最新版がインストールされますが、VisualStudioとUEのバージョンの組み合わせによって問題が発生する可能性があります。
今回はこれらのバージョンにまつわる問題の対処方法についての記事です。
最適なバージョンをしらべよう
公式ドキュメントにはVisualStudioのメジャーバージョンについて記述がありますが、細かいバージョンについては言及がありません。
エンジン開発時に想定しているVisualStudioについてはUnrealBuildToolのソース内に記述があります。
static readonly VersionNumberRange[] PreferredVisualCppVersions = new VersionNumberRange[]
{
VersionNumberRange.Parse("14.29.30133", "14.29.99999"), // VS2019 16.11.x
VersionNumberRange.Parse("14.33.31629", "14.33.99999"), // VS2022 17.3.x
};
上はUE5.1から抜粋したものですが、コメントより VS2019 16.11
および VS2022 17.3
を想定していることがわかります!
特定のバージョンのコンパイラをインストールしよう
新しすぎるバージョンをインストールしてしまった後に問題が発生したので古いバージョンのVisualStudioをインストールしなおすということを検討してもいいのですが、VisualStudioはサポートされている範囲内で複数のバージョンのコンパイラをインストールすることも可能です。
VisualStuidoのメニュー > ツール(Toos) > ツールと機能の取得(Get Tools and Features) と押してインストーラーを起動し、インストーラーの上のタブで個別のコンポーネント(Individual components)の中から欲しいバージョンにチェックを入れてインストールすることが可能です。
また同様に不要であればチェックを外すことでアンインストールも可能です。
VisualCのコンパイラは「MSVC v*** VS 2022 x64/x86 build tools ~」という名前になっており末尾の (v14.33-17.3) という部分でバージョンを確認することができます。
※左側のv14.33の部分がコンパイラのバージョンで右側の17.3がVisualStudioのバージョン
複数のバージョンがインストールされている場合
複数のバージョンがインストールされている環境では特に指定がなければ最新版が使われます。
どのバージョンが使われているかはコンパイル時のログにも
1>Using Visual Studio 2022 14.33.31631 toolchain (C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.33.31629) and Windows 10.0.19041.0 SDK (C:\Program Files (x86)\Windows Kits\10).
といった形で出力されているので確認してみてください。
特定のバージョンだけをインストールし最新版をアンインストールしてしまうことも一つの手ですが、複数のバージョンを維持しておいた上で幾つかの方法で任意のバージョンを使うことを強制することも可能です。
※指定したバージョンがインストールされいていないとエラーになります。
1. BuildConfiguration.xml ( PC全体 または PC内の特定のエンジン毎 )
一つ目はBuildConfiguration.xmlを設定する方法です。自分だけが特定のバージョンを使いたい場合はこの方法が適切です。
BuildConfiguration.xmlはソリューションエクスプローラーからブラウズできます。
以下は記述例です。
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<WindowsPlatform>
<Compiler>VisualStudio2022</Compiler>
<CompilerVersion>14.33.31629</CompilerVersion>
</WindowsPlatform>
</Configuration>
2. Target.csファイルに記述する
各プロジェクト毎のターゲット毎に設定してチーム開発のメンバーで共有したい場合はこの方法を選ぶことが出来ます。
public MyProjectEditorTarget(TargetInfo Target) : base(Target)
{
...
WindowsPlatform.Compiler = WindowsCompiler.VisualStudio2022;
WindowsPlatform.CompilerVersion = "14.32.31326";
}
3. iniファイルに記述する
DefaultEngine.iniに以下のような記述を追加することでもバージョン指定が可能です。
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
Compiler=VisualStudio2022
CompilerVersion="14.33.31629"
まとめ
エンジンを更新したり、VisualStudioをインストールしたり更新したあとに謎のコンパイルエラーに出くわしてしまったら、今回のブログにある方法でバージョンなどを確認してください。
コンパイラバージョンと同じく WindowsSDKのバージョン によって問題が起こることもありえます。こちらも同様にMicrosoftPlatformSDK.Versions.csに想定したバージョンが記述されていて、VisualStudioのツールと機能の取得よりアンインストール/インストールが可能となっています。合わせてご確認ください。