编译Unreal Enigne
获取源码:
参考:下载虚幻引擎源代码 | 虚幻引擎 5.6 文档 | Epic Developer Community
1.先注册Epic账号:Epic Games Developers - Epic Games Developers
2.确保有Github账号
3.点击Epic主页右上角的用户名,在下拉菜单里找到“账户”,进入账号设置页面,选中左边的“已关联账户”,然后找到Github,关联
4.关联Github后,会发送邮件给你,让你在7天内点击链接加入UE的组织,这里我不知道为何没收到邮件。手动前往Github页面,选择“Your organizations”,然后手动加入组织
5.加入组织后,才能正常看到UE的项目,否则打开页面是404的:GitHub页面

6.如果不是为了在主线上开发,只是要发布版源码的话,直接去发布页面,找到对应的版本下载下来即可,注意,需要同时下载Source Code(4.27.2)跟Commit.gitdeps.xml(4.27.2)。

编译(以4.27.2为例):
参考:从源代码构建虚幻引擎 | 虚幻引擎 4.27 文档 | Epic Developer Community
UnrealEngine/README.md at 4.27.2-release · EpicGames/UnrealEngine
虚幻unreal4.27源码编译编辑器流程与问题汇总 - 昂流 - 博客园
注1:4.27.2全部编译完占用空间大概78G,最后预留个100G的空间
注2:4.27.2官方推荐用VS2017,但实测VS2022也可以,不过要确保Window SDK版本不能太新,否则无法编译,这里用的是:Windows 11 SDK (10.0.22621.0)
注3:编译时对电脑性能要求不高,但如果内存不足会报堆空间不足错误,把虚拟内存页设置大点:高级系统设置->高级->性能设置->高级-> 虚拟内存 更改->

1.替换依赖配置:将上面下载的Commit.gitdeps.xml文件替换到Engine/Build/目录中,下面步骤Setup.bat安装依赖资源的时候,会从这个配置里去下载资源,默认的xml下载地址会失败。
2.运行项目根目录下的Setup.bat,这个步骤将开始下载引擎所需的依赖资源的二进制文件,大概8G,可断点续传。如果上面没有正确替换Commit.gitdeps.xml,这里下载资源会报错。
注:此过程很慢长,但是有个加速方式:可以多线程下载,速度倍增。例如:Setup.bat --threads=20(网上看到的,我没测试过)
3.运行项目根目录下的GenerateProjectFiles.bat(需要电脑有安装VS,这里装的是Visual Studio Community 2022),生成UE4的VS工程,该过程比较快,大概一二分钟。
4.打开UE4.sln(如果是UE4的话,官方推荐是用VS2017,但我这里用VS2022也可以正常编译):
如果提示未安装目标框架,直接选推荐的选项即可

将解决方案配置设置为 开发编辑器(Development Editor)

顺便把UE4设置为启动项目,右键单击UE4目标并选择“设置为启动目标”。

5.右键单击UE4目标并选择 构建(Build),此过程大概会花费比较久

6.此时直接编会报错:
报错1:error C4668: 没有将“_NOEXCEPT_TYPES_SUPPORTED”定义为预处理器宏,用“0”替换“#if/#elif”
解决:找到HoloLensTargetPlatform.Build.cs文件,打开,在最后一行添加代码
bEnableUndefinedIdentifierWarnings = false,解决报错。

参考:https://blog.csdn.net/qq_59095655/article/details/132892549
报错2:error C4834: 放弃具有 [[nodiscard]] 属性的函数的返回值
解决:找到SteamVRInputDeviceFunctionLibrary.cpp文件,打开
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, (TEXT("Unable to find Action [%s] for Action Set [%s]"), *ActionName.ToString(), *ActionSet.ToString()));
改为
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Unable to find Action [%s] for Action Set [%s]"), *ActionName.ToString(), *ActionSet.ToString()));
报错3:error C4756: 常量算法中溢出
原因:这是windows SDK版本错误导致的,比如有的UE版本要指定某个版本的SDK(UE4.27.2推荐10.0.22621.0),而VS没有安装目标SDK,或者VS存在多个SDK,使用的默认版本不是目标版本
解决1(推荐):去Visual Studio Installer里,将其他SDK版本删了,安装目标版本
解决2:打开Engine\Saved\UnrealBuildTool\BuildConfiguration.xml,将里面的

修改为,默认没有指定SDK版本,则UE会使用默认版本,这里设定为目标版本:

该种方式治标不治本,虽然引擎的编译解决了,但UE项目编译C++的时候,同样会因为SDK版本失败
7.构建正常完成后,可执行文件位于:工程目录\Engine\Binaries\Win64\UE4Editor.exe,直接打开即可运行UE4
也可以通过在VS里直接运行以启动调试


浙公网安备 33010602011771号