LoginSignup
15
10

More than 1 year has passed since last update.

[UE5] コンパイラーバージョンの指定方法

Last updated at Posted at 2023-04-04

アンリアルエンジンはC++で記述されており、Windows向けのビルドでは主にVisualStudioのコンパイラが使われます。
公式ドキュメントにUEのバージョンごとに対応したVisuaslStudioのバージョンに関して記載があります。

VisualStudioはとてもバージョンアップ速度が速く(ほぼ毎月更新があります!!)様々な機能追加やバグ修正がおこなわれています。基本的にはインストール時に最新版がインストールされますが、VisualStudioとUEのバージョンの組み合わせによって問題が発生する可能性があります。
今回はこれらのバージョンにまつわる問題の対処方法についての記事です。

最適なバージョンをしらべよう

公式ドキュメントにはVisualStudioのメジャーバージョンについて記述がありますが、細かいバージョンについては言及がありません。
エンジン開発時に想定しているVisualStudioについてはUnrealBuildToolのソース内に記述があります。

[エンジンのルート]\Engine\Source\Programs\UnrealBuildTool\Platform\Windows\MicrosoftPlatformSDK.Versions.cs
		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のバージョン

image.png

複数のバージョンがインストールされている場合

複数のバージョンがインストールされている環境では特に指定がなければ最新版が使われます。
どのバージョンが使われているかはコンパイル時のログにも

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に以下のような記述を追加することでもバージョン指定が可能です。

Config/DefaultEngine.ini
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
Compiler=VisualStudio2022
CompilerVersion="14.33.31629"

まとめ

エンジンを更新したり、VisualStudioをインストールしたり更新したあとに謎のコンパイルエラーに出くわしてしまったら、今回のブログにある方法でバージョンなどを確認してください。
コンパイラバージョンと同じく WindowsSDKのバージョン によって問題が起こることもありえます。こちらも同様にMicrosoftPlatformSDK.Versions.csに想定したバージョンが記述されていて、VisualStudioのツールと機能の取得よりアンインストール/インストールが可能となっています。合わせてご確認ください。

15
10
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
15
10