UnrealEngine4を日本語VisualStudio2019でコンパイルするとログが文字化けする件
VS2019 16.6以降でなにかが起きた
日本語版VS2019 16.6以降でUE4をビルドすると、コンパイルエラーの文字が盛大に文字化けします。
VS2019 16.6で適用されたVS内のMicrosoft.MakeFile.Targetで chcp 65001 などのコマンドをつかってutf-8化が行われたのが原因です。
このファイルを見るとわかりますが、NMakeUseOemCodePageプロパティによって旧来の動作と新しい動作が切り替わるようになっているのがわかります。
古い動作を使うようにUBTを修正する
このプロパティはプロジェクトファイルに設定することで動作が変わります。
UE4ではプロジェクトファイルは直接は弄らず、GenerateProjectFiles.bat (中はUBTの呼び出し) によって作成されるので
UBTに変更を加える必要があります。
// 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でプロジェクトファイルの更新をおこなってください。
正しいエラー文字列が表示されるようになりました。めでたしめでたし。
追記
ビルドしたときに 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/
Author And Source
この問題について(UnrealEngine4を日本語VisualStudio2019でコンパイルするとログが文字化けする件), 我々は、より多くの情報をここで見つけました https://qiita.com/EGJ-Takashi_Suzuki/items/23f9ae5fdddae217d841著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .