UE4在Windows系统下交叉编译Linux环境

您所在的位置:网站首页 ue4打包错误 UE4在Windows系统下交叉编译Linux环境

UE4在Windows系统下交叉编译Linux环境

2023-09-10 09:08| 来源: 网络整理| 查看: 265

仅记录自己在交叉编译的过程中遇到的问题。

本文参考了youtube上的英文教程,可以自行观看。以及另一篇学习笔记。

环境:UE4.16,Windows 10,VS2017

1、在官方网站文档下载对应版本的工具链,并安装程序包。可以通过网页下方的“故障排除”验证是否成功安装。

*一些教程中说需要设置环境变量,事实上现在并不需要设置。

2、在github上下载官方提供的源码,目前最新的版本是UE5,如果需要下载历史版本的源码,可以用链接 https://github.com/EpicGames/UnrealEngine/tree/4.16 访问,其中4.16替换为自己需要的版本。

*访问以上github项目需要先将自己UnrealEngine账号与github账号连接,操作方法:

进入官方网站并登录自己的账号,在右上角账号名处,依次选择“个人”,“连接”,连接成功后的截图。

 3、下载源码并解压,在cmd中当前目录,并依次执行两个命令:

Setup.bat

*会下载 几十G 左右的内容

GenerateProjectFiles.bat -2017

*2017为对应的Visual Studio的版本,需要的版本可以在上方github源码的说明中查看。

*踩坑1:error MSB4019:未找到导入的项目 “VS安装路径\MSBuild\15.0\bin\Roslyn\Microsoft.CSharp.Core.targets”。请确认声明中的路径正确,且磁盘上存在该文件。

*原因:安装VS时未安装.NET相关的组件。

*解决方法:打开VS,在菜单栏选择工具 --> 获取工具和功能,为 .NET desktop development 打勾并安装。当时我安装了好几个包,解决方法可参考官方论坛。

命令执行完毕后,会在文件夹中生成UE4.sln文件。

4、打开UE4.sln,选择 "Development Editor","Win64",右键UE4选择"生成"。

*这一步相当耗时与磁盘空间。刚开始我编译的UE5,耗时至少十几小时并且磁盘占用100G+,磁盘空间不够,最后编译了UE4。UE4在此步占用磁盘空间几十G,耗时若干小时。

*踩坑2:C2039 “SetPipelineState”: 不是“FD3D12StateCacheBase”的成员

error MSB3075: 命令 "..\..\Build\BatchFiles\Build.bat UE4Editor Win64 Development -waitmutex -2017" 已退出,代码为5。请验证您是否拥有运行此命令的足够权限。

*过程:刚开始只搜索了MSB3075的错误原因,大部分资料说明要用管理员权限打开VS,但并没有解决。在编译Linux的时候无此错误,只在编译Win64的时候有此错误。最终根据错误信息C2039 在官方论坛上找到了对应的解决方案。

*解决方法:在VS中点击错误信息,打开D3D12StateCachePrivate.h文件,在716行,

D3D12_STATE_CACHE_INLINE void FD3D12StateCacheBase::SetPipelineState(FD3D12PipelineState* PSO)

修改为

D3D12_STATE_CACHE_INLINE void SetPipelineState(FD3D12PipelineState* PSO)

即删除 “FD3D12StateCacheBase::”。这个可能是我特定版本遇到的错误。

5、打开自己的项目文件(.uproject),右键,选择 "Switch Unreal Engine version ...",并按下图所示选择源码编译的UE4所在的路径。

 6、此时打开自己的项目文件,便可把项目打包到Linux平台了。

*踩坑3:UnrealBuildTool: ERROR: Unable to determine module type for D:\...\Source\\.Build.cs

提示打包项目失败,点击 "Show Output Log" 才在后面看到这个错误信息(不是最后一行并且没有特殊颜色标注)

*原因:.uproject 设置缺失

*解决方法:右键项目文件(.uproject),选择打开方式,选择记事本,添加以下信息:

"Modules": [         {             "Name": "",             "Type": "Runtime",             "LoadingPhase": "Default",             "AdditionalDependencies": [                 "Engine"             ]         }     ],

其中需要替换为自己的项目名。此时重新打开项目文件会加载一段时间。该方法参考官方论坛。

*早期项目文件提示打不开,我自己删除了上述信息结果打开了,现在要加回来 -.-



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3