Help us understand the problem. What is going on with this article?

UnrealEngine4を日本語VisualStudio2019でコンパイルするとログが文字化けする件

VS2019 16.6以降でなにかが起きた

日本語版VS2019 16.6以降でUE4をビルドすると、コンパイルエラーの文字が盛大に文字化けします。

2020-11-10_16h56_42.png

VS2019 16.6で適用されたVS内のMicrosoft.MakeFile.Targetで chcp 65001 などのコマンドをつかってutf-8化が行われたのが原因です。
このファイルを見るとわかりますが、NMakeUseOemCodePageプロパティによって旧来の動作と新しい動作が切り替わるようになっているのがわかります。

古い動作を使うようにUBTを修正する

このプロパティはプロジェクトファイルに設定することで動作が変わります。
UE4ではプロジェクトファイルは直接は弄らず、GenerateProjectFiles.bat (中はUBTの呼び出し) によって作成されるので
UBTに変更を加える必要があります。

VCProject.cs
            // Project globals (project GUID, project type, SCC bindings, etc)
            {
                VCProjectFileContent.AppendLine("  <PropertyGroup Label=\"Globals\">");
                VCProjectFileContent.AppendLine("    <ProjectGuid>{0}</ProjectGuid>", ProjectGUID.ToString("B").ToUpperInvariant());
                VCProjectFileContent.AppendLine("    <Keyword>MakeFileProj</Keyword>");
                VCProjectFileContent.AppendLine("    <RootNamespace>{0}</RootNamespace>", ProjectName);
                VCProjectFileGenerator.AppendPlatformToolsetProperty(VCProjectFileContent, ProjectFileFormat);
                VCProjectFileContent.AppendLine("    <MinimumVisualStudioVersion>{0}</MinimumVisualStudioVersion>", VCProjectFileGenerator.GetProjectFileToolVersionString(ProjectFileFormat));
/*----->*/      VCProjectFileContent.AppendLine("    <NMakeUseOemCodePage>true</NMakeUseOemCodePage>");  //これを追加
                VCProjectFileContent.AppendLine("    <TargetRuntime>Native</TargetRuntime>");
                VCProjectFileContent.AppendLine("  </PropertyGroup>");
            }

変更を適用したらGenerateProjectFiles.batでプロジェクトファイルの更新をおこなってください。

2020-11-10_18h13_09.png

正しいエラー文字列が表示されるようになりました。めでたしめでたし。

追記

ビルドしたときに Microsoft.MakeFile.targets ファイルの中で System32\chcp.com 65001 > NUL がどうたらこうたらというエラーが出る場合もこれで解決します。

コンパイルエラー
1>C:\Program Files (x86)\(略)\v160\Microsoft.MakeFile.Targets(46,5): error MSB3073: The command "C:\WINDOWS\System32\chcp.com 65001 >NUL 

謝辞&リンク

調査には @steel_code さんのこの記事に大変助けられました!ありがとうございます!
VS2019でUE4のビルド時に日本語出力が文字化けする

Redditでも同じところで問題が出ているケースが報告されています。
https://www.reddit.com/r/unrealengine/comments/gphjjj/unable_to_compile_c_project_425/

EGJ-Takashi_Suzuki
※免責事項※ 可能な限り正確な情報を掲載するよう努めていますが、必ずしも正確性を保証するものではありません。掲載された内容によって生じた直接的、間接的な損害に対し、一切の責任を負いかねますので、ご了承ください。
epicgamesjapan
Unreal Engine の提供、開発サポートを行っています。
https://www.unrealengine.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away