背景

UE5.0版本采用VS2019是可以的,但是UE5.1依赖VS的最低版本都需要到VS2022


参考

UE5.1 源码下载编译过程记录_宁静致远的技术博客_51CTO博客


执行Setup.bat

修改Setup.bat文件,然后执行

理由:设置缓存避免下载失败以后,重新下载,设置多线程下载加快速度

set PROMPT_ARGUMENT=--prompt --cache=f:\cache --threads=10

--http-timeout-multiplier=60这个参数在5.0版本还没有添加,因此需要删除,5.1版本以后才有


问题找不到文件UEPrereqSetup_x64.exe

UE5.0 源码下载编译过程记录_UE5.0 源码下载编译过程记录

其他源码版本拷贝过去


执行GenerateProjectFiles.bat

问题It looks like you're missing some files

GenerateProjectFiles ERROR: It looks like you're missing some files that are required in order to generate projects.  Please check that you've downloaded and unpacked the engine source code, binaries, content and third-party dependencies before running this script.

出现上述问题是屏蔽掉了--exclude=Linux --exclude=IOS --exclude=HTML5 --exclude=Android 等第三方库,因此,将上述限制去掉。


问题


VS2022能否打开VS2019的源码工程编译

编译出现如下提示错误

错误	C4834	放弃具有 "nodiscard" 属性的函数的返回值
错误	MSB3073	命令“..\..\Build\BatchFiles\Rebuild.bat -Target="UnrealEditor Win64 Development" -Target="ShaderCompileWorker Win64 Development -Quiet" -WaitMutex -FromMsBuild”已退出,代码为 -1

解决方案

出错文件

Engine\Plugins\Runtime\Steam\SteamVR\Source\SteamVRInputDevice\Private\SteamVRInputDeviceFunctionLibrary.cpp

代码头添加

#pragma warning(disable : 4834)

最终效果

#include "SteamVRInputDeviceFunctionLibrary.h"

//#if STEAMVRCONTROLLER_SUPPORTED_PLATFORMS
#include "openvr.h"
#include "GameFramework/WorldSettings.h"
#include "HAL/FileManagerGeneric.h"
#include "SteamVRInputDevice.h"
using namespace vr;
//#endif // STEAMVRCONTROLLER_SUPPORTED_PLATFORMS

#pragma warning(disable : 4834)