为了写这篇博客,我把自己以前已经编译好的CE全删除了,从头开始来一遍,以便帮助大家,从头开始编译一个完整的CryEngine。


目录

从github获取CryEngine最新源码
下载第三方依赖库
Cmake构建VS工程
常见编译报错解决
SandBox启动报错
在使用过程中给引擎添加缺失模块

注:【常见编译报错解决】【SandBox启动报错】这两个小节会不间断更新,你现在看到的不一定是最全的!后续使用过程还有什么报错的话也会陆陆续续上传解决办法。

需要快速解决问题请加QQ群:457378561,群里聊



编译时间:2018年9月30日

从github获取CryEngine最新源码

  • CryEngine的github地址:https://github.com/CRYTEK/CRYENGINE
  • 分支选择stabilisation(因为该分支带着所有CE的源码包括sandBox) 然后直接用git clone或者下载zip压缩包。
  • 如果是git clone的工程,clone完成后需要把分支切换到stabilisation;如果是下载的ZIP压缩包,请先选择stabilisation分支后再下载压缩包。

我使用git clone的方式

下载第三方依赖库

克隆或者解压缩完成后进入目录点击download_sdks.exe或者手动下载第三方依赖库,如果使用程序下载经常失败还是选择手动下载。这里我选择手动下载

程序下载:

手动下载链接

把下面地址复制到迅雷或者浏览器即可下载:

https://github.com/CRYTEK/CRYENGINE/releases/download/5.5.0_preview4/CRYENGINE_v5.5.0_SDKs

如果是直接点击download_sdks.py或者download_sdks.exe下载第三方库他会自行解压到code/SDKs这个目录下

手动下载的第三方依赖压缩包请自行解压到Code/SDKs这个目录下,SDKs目录需要自行手动添加,解压后的截图如下:

Cmake构建VS工程

CryEngine使用Cmake管理源码工程,不知道Cmake是什么请自行百度学习。

  • 运行Cmake-gui(cmake引擎已经自带了,无需自己下载)
  • 选择源码路径和构建后保存的路径

为什么源码路径会是G:\CryEngine\CRYENGINE,因为这个目录下有最顶级的CMakeLists.txt文件,想知根知底的自己去学习cmake。
然后点【configure】开始配置工程,cryengine只有visual studio 2015以上VS版本能编译通过,所以这里如下图选择VS版本,有2015的也可以选择2015

配置好点【Finish】之后,就开始了。然后cmake会报错,我们来看一下

报错信息说 在SandBox模块下缺少FBXSdk(2016),我们就来下个吧
FBX下载网址:
https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-archives
或者下面这个百度网盘地址:
链接:https://pan.baidu.com/s/1GUmOJuvtWPTzbN0x5FCxOw
提取码:jemg

由于报错说是2016的,我们就来下个FBX2016最新的


下载后不知道安装在哪?没事,一起来再看下详细的报错信息
Tools/CMake/Build.cmake:43 (include)
这行是 include (“${TOOLS_CMAKE_DIR}/BuildSandbox.cmake”)
就说明在BuildSandbox.cmake出错的,到该文件下找到如下一行:

if(NOT EXISTS "${SDK_DIR}/FbxSdk")message(WARNING "FBX SDK (2016) is required to build Sandbox. Download it from https://www.autodesk.com.")return()
endif()

不存在就打印报错信息,${SDK_DIR}显然就是Code/SDKs这个目录,然后需要把FBXSDK安装到FbxSdk这个目录下。看下面的Cmake路径一定要对应:

FBXsdk目录下直接就是include lib等等这些文件夹

然后再点【Configure】,如果还发现报错信息请按照上述方法去修改。

  • p4api这个sdk应该还会报错,可以去github或者google上搜索下载对应的sdk版本,如果自己找不到也可以用我网盘里面的
    链接:https://pan.baidu.com/s/1GUmOJuvtWPTzbN0x5FCxOw
    提取码:jemg

  • CMAKE上有些勾选项,需要的自行勾选,一般默认就行,勾选后点【Configure】还报错的话,一样的解决办法。

  • 最后【Configure】没有报错的话我们就点【Generate】,然后到构建目录下就能找到.sln然后打选择ALL_BUILD就开始编译了。

  • 编译选项有 debug,profile,release。debug和release不用多说,profile这个选项就是完全通过编译器优化后再编译的,调试的时候开这个会乱跳,建议编译的时候完全选择profile,需要调试相关模块的时候,再在相关模块上右键选择debug编译后再调试。

  • 编译如果出现报错,什么模块报什么样的错属于C++编译的范畴了自行解决。

  • 实在不会解决给我留言或者加QQ群:457378561 咨询

常见编译报错解决

  • CryRenderD3D12、CryRenderD3D11 、CryRenderVulkan
    一般都是报dx头文件未包含问题和dx的lib未链接的问题

右击项目–>属性–>c/c++ --> 常规–>附加包含目录,添加以下两个文件夹路径

同样在链接器里面添加dx和VS编译对应的lib路径,我的如下
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x64

你想问如何找到这种路径的? 直接用Everything这个东西搜到了,搜到一大堆选择自己需要的就行了

  • crashrpt
    由于该模块把编译警告视为编译错误引起的,把编译视为警告关了就OK了。

  • CrySystem
    警告被视为错误同上处理;
    dx包含问题同上处理

  • PerforcePlugin
    报错截图如下

这个错误是qmake再真正的c++编译之前对QT的源文件预编译时报的错,发生这种错误的问题一般资源缺失造成的,那么我们就从该模块的cmake开始入手吧。

具体来看看这个模块的CMakeLists.txt这个里面都写了什么:

从上图可以看出该模块依赖第三方库p4api,p4api是什么自己去网上多了解下这里给个网盘地址:
链接:https://pan.baidu.com/s/1GUmOJuvtWPTzbN0x5FCxOw
提取码:jemg
关于p4api的下载给出了下载链接,网上也能直接搜索到。

对应CMakeLists.txt如下:

#START-FILE-LIST
# File List auto generated by waf2cmake.py, do not modify manually.start_sources()
# -- perforceplugin.waf_files --
sources_platform(ALL)
add_sources("NoUberFile"SOURCE_GROUP "Root""PasswordDlg.cpp""PasswordDlg.h""PerforcePlugin.cpp""PerforcePlugin.h""PerforcePlugin.rc""PerforcePlugin.qrc""PerforceSourceControl.cpp""PerforceSourceControl.h""resource.h""stdafx.cpp""stdafx.h"
)end_sources()
#END-FILE-LISTCryEditorPlugin(PerforcePlugin PCH "stdafx.cpp" SOLUTION_FOLDER "Sandbox/Plugins" DISABLE_MFC)
force_static_crt()
target_compile_definitions(${THIS_PROJECT} PRIVATE -DBOOST_ALL_NO_LIB)
target_include_directories(${THIS_PROJECT} PRIVATE "${SDK_DIR}/p4api/include")if (MSVC_VERSION GREATER 1900) # Visual Studio > 2015set(p4api_subfolder vc14)
elseif (MSVC_VERSION EQUAL 1900) # Visual Studio 2015set(p4api_subfolder vc14)
elseif (MSVC_VERSION EQUAL 1800) # Visual Studio 2013set(p4api_subfolder vc12)
elseif (MSVC_VERSION EQUAL 1700) # Visual Studio 2012set(p4api_subfolder vc11)
endif()set_libpath_flag()
set_property(TARGET ${THIS_PROJECT} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " ${LIBPATH_FLAG}\"${SDK_DIR}/p4api/${p4api_subfolder}_x64_debug/lib\"")
set_property(TARGET ${THIS_PROJECT} APPEND_STRING PROPERTY LINK_FLAGS_PROFILE " ${LIBPATH_FLAG}\"${SDK_DIR}/p4api/${p4api_subfolder}_x64_release/lib\"")
set_property(TARGET ${THIS_PROJECT} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " ${LIBPATH_FLAG}\"${SDK_DIR}/p4api/${p4api_subfolder}_x64_release/lib\"")
target_link_libraries(${THIS_PROJECT} PRIVATE libclient libp4sslstub librpc libsupp)

上面是头文件的路径应该在Code/SDKx/p4api/include下,根据不同的VS版本选择不同目录下lib去链接,路径都清楚了后,把刚才下载的p4api按照一模一样的路径去放置,include直接解压,对应的lib放到不同的目录下(lib的目录是自己根据CMake内容新建的),我的目录如下:


这里的路径要弄仔细了,仔细看我上面的路径,然后再编译,还是报同样的错,然后在编译输出中找到了这一句:

这个就很明显了,是qt的rcc资源编译的时候没有找到p4.ico这个图标,这个解决办法就是从网上随便下载个ico重命名为p4.ico并放到对应的目录下就能编译过了。res/p4.ico是个相对路径,但是该放在哪里呢?
我们仔细看报错信息:

Error in 'G:/CryEngine/CRYENGINE/Code/Sandbox/Plugins/PerforcePlugin/PerforcePlugin.qrc': Cannot find file 'res/p4.ico'

G:/CryEngine/CRYENGINE/Code/Sandbox/Plugins/PerforcePlugin
这个路径不带build,说明是下载源码里面的,很奇怪官方为啥一直不加上去,所以我们在这个目录下新建一个目录叫res,然后把自己下载改名后的图标一个是p4.ico和p4_error.ico放进该目录下。问我咋知道的?看下图就明白了

比如我的图标如下:

然后再编译应该能通过了。

编译成功后,最好提前下载一个官网的引擎launcher版,因为在启动SandBox的时候模块加载到CryAction的时候会验证用户信息,让你登陆Launcher。在预览版的时候这一步只要等一段时间会自动跳过,但我编译的这个版本没试过。然后把SandBox模块设置为启动项,F5运行就能启动了

  • 无法打开包括文件: “afx.h”
    该头文件属于MFC,CryEngine的SandBox虽然现在改用QT了但是还有部分依赖MFC,所以该问题的出现一般是在安装VS的时候没有勾选MFC。重新运行VS的安装文件,然后选择下MFC更新VS就好了。

SandBox启动报错

  • 缺失rc.exe报错

这个rc.exe我个人猜测应该是RC这个模块编译出来的,但是这个模块里面什么cpp都没有。然后我从官方下载的引擎包里找到这个东西,就把他复制到了对应的路径下,下次启动就不再报这个错了。这个rc包我已经压缩上传百度网盘,可自行下载。对应路径为:CRYENGINE\Tools\rc。

  • 没有找到.cryproject错误

    这个错误,在之前的预览版是可以直接跳过的,跳过之后再选择不预先加载.cryproject就行了,等到编辑器界面出来后,再从菜单打开工程即可。如果想自己手动加的话在VS项目中找到SandBox模块然后
    右键–>属性–>调试–>命令参数 中添加如下内容:

     -project "your .cryproject path"
    


    添加之后再启动就不会报这个信息了。

  • 无法加载CryGamePlatfrom模块

    这个模块在cmake的时候没有勾选的话就不会加入整个工程项目参与编译,这个模块应该是跟steam平台对接的一个dll,便于游戏的发布吧。这里暂时用不到就不说了,直接点【ok】跳过就行,如果需要安装的看在使用过程给引擎添加模块这个章节有说。

  • 打开游戏场景时跳出崩溃对话框
    万事功成的时候,在编辑器完美启动后,然后打开一个场景,这个时候发现突然崩溃了,崩溃如下图:


    这个崩溃猜想应该是什么东西的矩阵这个变量无效导致的。千万别在这个时候放弃啊(这个问题只是在完全Debug版中会崩溃,Profile版不会出现这个问题)。解决办法就是点【Ignore All】就过去了或者完全改成Profile版再编一个。

运行成功截图

什么!?!?才有9.2帧,因为我的整个工程都是debug版的,所以不用大惊小怪的,全部换成profile版的就不会是9.2了。

在使用过程中给引擎添加缺失模块

引擎都编译好了,发现有一些模块没有由于之前cmake的时候没有勾选,导致某些功能不能用,怎么办??
别担心,再次打开我们之前用的cmake,然后勾选对应的模块,比如缺失CryGamePlatform导致运行CryGameSDK模块时包如下错误:

这个时候我们就应该想到这个CryGamePlatform应该来自于官方,因为模块名很官方化。所以就应该想到当时我们急匆匆cmake的时候应该遗漏了一些项,然后再次打开cmake找到如下选项,然后打勾:

然后再点【Configure】,配置的时候会报错

 not find "SDKs/Steamworks"

下载链接地址:
https://partner.steamgames.com/downloads/steamworks_sdk_142.zip

之前猜测的果然没错,勾选的这个插件模块跟steam平台有密切的关系,然后我们去steam官网把这个sdk下下来放到对应的目录下再【Configure】就没问题了。配置成功后即可点击【Generate】生成工程,我的Steamworks的目录如下:

cmake完成后VS工程多出了对应的模块:

然后再ALL_BUILD生成下就OK了。

CryEnging5.5源码+编辑器完全编译(2018-9-30)相关推荐

  1. 51ak带你看MYSQL5.7源码2:编译现有的代码

    从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 申明:个人Python编程很溜,但是C++还停在白痴水平,源码理解方面有点弱,如发现有错误的地方,轻喷 目 ...

  2. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...

  3. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...

  4. 基于源码编辑器的跑酷游戏设计

    软件平台:源码编辑器 背景:使用编辑器自带的"天空"背景 角色:一共使用了三个角色.其中1是角色中的"编程猫骑扫把",2是角色中的"蓝雀", ...

  5. Android Gradle Plugin 源码阅读与编译

    前言 为了解一些Andorid的构建流程,有时候需要阅读Android Gradle Plugin的相关源码的.自己阅读Android Gradle Plugin源码主要经历了三个时期: 1.AOSP ...

  6. dll 源码_重新编译mono——Android动态更新dll

    环境: 操作系统:Mac OSX10.12.6 mono版本:unity2017.1.3p4 NDK版本:android-ndk-r10e 一.指导步骤: 1.修改mono源码,重新编译,替换打包机的 ...

  7. 探索比特币源码0-bitcoin的编译

    探索比特币源码0-bitcoin的编译 前言 区块链领域作为一个新兴的热点,迭代的实在是太快了,刚刚入门,必须要抓紧追赶. 在阅读了一些优秀的文档之后,已经对比特币及其背后的实现技术--区块链有了一定 ...

  8. 友盟统计java代码_SFAnalytics 分析友盟统计源码,反编译 SDK,还有部分没有 出来 android 259万源代码下载- www.pudn.com...

    文件名称: SFAnalytics下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 8023 KB 上传时间: 2016-06-05 下载次数: 0 提 供 者: ...

  9. spark的java源码,Spark源码包的编译

    Spark源码包的编译和部署生成,其本质只有两种:Maven和SBT (Simple Build Tool), 只不过针对不同的场景而已: Maven编译 SBT编译 IntelliJ IDEA编译( ...

最新文章

  1. 文本特征选择 java代码_文本分类入门(十)特征选择算法之开方检验
  2. axure9 html文件使用ie打开图片无法显示_win7系统html文件如何打开 win7系统html文件打开方法【介绍】...
  3. xfce4环境下gdm3更换背景图片
  4. Invitation Cards POJ 1511
  5. 转:android学习帖子大汇集
  6. Unity Shader _Time 的单位
  7. 小狗拉菲扫地机器人_小狗电器:2018年最值得入手的五款扫地机器人
  8. constraintlayout布局新特性_进阶ConstraintLayout-2.0新特性
  9. node.js与npm下载及配置流程
  10. 国内外各大免费搜索引擎、导航网址提交入口(转载)
  11. 飞翔到你希望的遥远的地方
  12. java工程积累——saas之multi-tenancy解析
  13. VMware 8的下载安装
  14. windows server 2008磁盘管理
  15. redhat各版本和下载地址
  16. 【字符串】字符串长度与字节长度
  17. vue整合dorado框架
  18. js 日期增加加天数计算
  19. VR云游带你浏览景区,云游的体验和应用介绍!
  20. 细说MATLAB中的MAX函数 (翻译Help文档而来)

热门文章

  1. maven 跳过单元测试的3种方法
  2. 5、SpringMVC自动配置概览
  3. 异步爬虫(高效爬虫)
  4. 推荐几个2023年比较好用的youtube转换器
  5. 系统分析师(一)软考简介
  6. cif和cip的区别_CIF与CIP价的区别?CIP价怎么算的?...
  7. 清理localstorage_localstorage文件夹可以删除吗
  8. Attention Is All You Need论文笔记
  9. RPG游戏-道具系统
  10. C++牛顿迭代法解非线性方程