CesiumforUnreal V2.11.0源码编译实现笔记
蓝天白云蔷薇花
编辑于 2025年01月02日 08:42
收录于文集
共46篇

官方文档: https://github.com/CesiumGS/cesium-unreal/blob/main/Documentation/developer-setup-windows.md

以下是我的实现笔记

一、软件环境(windows系统)

1.Git

https://git-scm.com/downloads/win

2.Cmake (3.30.0以上)

https://cmake.org/resources/

3.Visual Studio 2022

https://visualstudio.microsoft.com/zh-hans/downloads/

  • Under Workloads, check Desktop development with C++

  • Under Workloads, check Game development with C++

  • Under Individual components, check .NET Framework 4.8 SDK (or newer)

4.UE(5.2以上)

https://www.unrealengine.com/zh-CN/download

二、步骤

1.运行Git CMD,Clone Cesium-unreal源代码

(1)执行命令

git clone --recurse-submodules https://github.com/CesiumGS/cesium-unreal.git

(2)下载后的文件保存路径

下载后的文件夹为cesium-unreal,在当前执行命令的路径下,比如我这里是:C:\Users\pc\cesium-unreal

2. Cesium-unreal源代码放入UE C++项目里

UE新建一个C++项目(如果不成功,就根据提示完善C++编译环境),.uproject所在的同级目录新建Plugins文件夹,把cesium-unreal文件夹拷到里面。

3. 用CMake GUI进行Configure和Generate

在这个过程中,我主要遇到几个问题,对应的解决方法如下:

3.1 UNREAL_ENGINE_ROOT环境变量没定义

(1)问题截图

(2)解决方法

系统中定义环境变量根据提示设置环境变量后,重启电脑。

3.2 连不上https://github.com/microsoft/vcpkg.git

(1)问题截图

(2)解决方法

操作系统中,把系统区域设置为英语(美国),然后重启电脑,然后在网络好的时候,重新用CMake GUI configure。

3.3 '/.ezvcpkg/2024.11.16'已存在,为非空目录

(1)问题截图

(2)解决方法

关闭CMake GUI,把C:\.ezvcpkg删除,然后重新用CMake GUI configure。

3.4 最后Configure成功(有些Warning不影响), 然后Generate

4.  编译cesium-unreal-extern.sln

4.1方法一(直接生成整个解决方案,此方法作为参考,推荐优先使用“4.2方法二(优先生成ZERO_CHECK)”

方法一是直接选择整个解决方案,点生成,此过程中遇到各个问题,一一解决后,INSTALL

在这个过程中,我主要遇到几个问题,对应的解决方法如下:

4.1.1 无法打开包括文件

(1) 问题截图

(2)解决方法

配置项目以使用vcpkg Install里的文件。右键点击有问题的项目,选择“属性”;导航到“配置属性”->“VC++目录”;在“包含目录”字段中,添加vcpkg的头文件路径;确保“库目录”字段也包含了vcpkg的库文件路径。

4.1.2 以下警告被视为错误

(1)问题截图

(2)解决方法

选中出错项目,调出属性,设置将警告视为错误为否

4.1.3 ZERO_CHECK 项目MSB8066错误

(1)问题截图

(2)解决方法

网络好的时候重新编译下ZERO_CHECK 项目,确保下面的目录中生成generate.stamp文件就好。

4.2方法二(优先生成ZERO_CHECK)

某同学实践,推荐这个方法

(1)如果在项目所在的比如D盘根目录下有.ezvcpkg文件夹,请先删除。

(2)在Cesium Native里单独先生成ZERO_CHECK这个项目,步骤中让它重新克隆ezvcpkg,它会克隆在项目D盘,这样操作就不用单独去添加库目录和包含目录

(3)然后生成整个解决方案,遇到问题就少,如遇到问题则参考方法一解决。

4.3 编译和安装

编译Release成功后,选中INSTALL项目生成,确保D:\CesiumProjects\Code_V2_11_0\Plugins\cesium-unreal\Source\ThirdParty里有相应的文件。

5. 编译项目.sln

删除红框的文件,选中.uproject,右键Generate Visual Studio project files,这样就更新了项目的.sln文件。打开.sln文件,选中项目,生成就可。

三、编译最后结果

打开.uproject,'CesiumForUnreal' is Incompatible 框跳出,选YES后,UE能正常打开。确认下Cesium for Unreal是在PROJECT下,版本2.11.0,然后就可以开始正常使用Cesium for Unreal。

四、打包exe和运行的问题

1.问题

按照上述步骤从"https://github.com/CesiumGS/cesium-unreal/ " main branch下载的源码,编译成功Cesium for Unreal后,用UE5.3, UE5.4均可以把项目打包成exe,但双击运行后会有下面的Message,关闭后,exe也关闭,无法继续运行。

下图是UE5.3打包后的程序运行Message

下图是UE5.4打包后的程序运行Message

2. 解决方法

解决方法有两种,推荐第(2)种。

(1)解决方法是用Cesium for Unreal 源码编译时提示的UE版本来进行编译打包,这里是UE5.2, 就可以。

之前也出现过类似的问题:网页链接​

(2)到https://github.com/CesiumGS/cesium-unreal/releases/, 下载对应UE版本比如 “CesiumForUnreal-54-v2.11.0.zip”,然后解压到Plugins文件夹中,覆盖原有的Cesium for Unreal源代码,然后在这个基础上修改。CesiumForUnreal-54-v2.11.0.zip文件中不包含Cesium Native的代码,但包含Cesium Native的编译结果,Cesium Native修改了的话,重新编译并INSTALL来覆盖Cesium Native的编译结果,即Plugins\CesiumForUnreal\Source\ThirdParty里的文件。

3.原因

从解决方法上,可以分析到大概原因。

(1)该问题的产生与Cesium Native无关,问题在于CesiumForUnreal层级的代码。

(2)CesiumForUnreal中肯定有某块代码是依赖UE的版本的,根据UE的版本应该要变化的,目前我不知道是什么代码,但通过覆盖CesiumForUnreal层级的代码可以获得正确的代码。