CEGUI 0.8.3在vs2005下的配置和编译

以下是我的版本

环境VS2005,WindowsXP

 

首先说一下Cmake的作用, CMAKE是根据你给的设置,生成VS工程文件,打开这个工程文件编译,就可以得到最终文件。

CMAKE需要指定两个目录。一个是源目录,另一个是目标目录。源目录是CMakeLists.txt文件所在目录。目标目录是生成的VS工程文件目录,当然其中会包含多个工程文件。

针对CEGUI,我这样设置。没什么规定,只是方便。

cegui-deps-0.8.x-src   ->  cegui-deps-0.8.x-src/build

cegui-0.8.3          ->    cegui-0.8.3/build

 

编译cegui-deps-0.8.x-src简要说明

这一步我命名为“编译依赖”

设置cegui-deps-0.8.x-src,这个CEGUI依赖的库文件,CEGUI作者把所有依赖库集中到一起,方便大家编译,也省去了各库版本不一致的问题。其实这一步骤和编译CEGUI毫无关系,仅仅是生成依赖的库文件,以及把头文件集中到一起。方便CEGUI调用。这一步少编译了某个库文件,而你在生成CEGUI工程的时候,选择了使用它,编译CEGUI的时候将会提示找不到定义。或者无法解决的符号等问题。可以在这一步尽量多编译一些依赖库。以后再决定是否用到这些库。



1、 如图所示填上源文件和目标文件夹。目标文件夹推荐设置在源文件的目录下。这样生成出来的VS工程文件就在build文件夹下。

2、 点击”Configure” 会弹出一个对话框,新建build文件夹,然后选择VS编译器。

3、 等待一会后会出现上图红色部分的众多选项。根据需要勾选需要编译的库文件。

注意勾选 “Advanced”选项,这会显示所有选项。这点很重要。包括后来生成CEGUI工程的时候也是如此。

 

3.1如果勾选”Grouped”选项。将会把这些选项分组。这里一个是CEGUI,一个是CMAKE

 

3.2 CEGUI部分如下,鼠标点击一项,悬停在上面将得到该库的提示。

      

3.3 配置部分

图像库

CEGUI_BUILD_CORONA

CEGUI_BUILD_DEVIL

CEGUI_BUILD_FREEIMAGE

CEGUI_BUILD_SILLY

 

DirectX

CEGUI_BUILD_EFFECTS11

 

字体

CEGUI_BUILD_FREETYPE2

 

OpenGL

CEGUI_BUILD_GLEW

CEGUI_BUILD_GLFW

CEGUI_BUILD_GLM

 

LUA

CEGUI_BUILD_LUA

 

压缩

CEGUI_BUILD_MINIZIP

CEGUI_BUILD_ZLIB

 

XML解析库

CEGUI_BUILD_EXPAT

CEGUI_BUILD_PCRE

CEGUI_BUILD_TINYXML

CEGUI_BUILD_XERCES

 

CEGUI_MSVC_STATIC_RUNTIME

 

CMAKE_USE_RELATIVE_PATHS

       使用相对路径-没试过


以上库除了CEGUI_BUILD_DEVIL,我在VS2005下都编译通过, CEGUI_BUILD_DEVIL因为代码中有多国字符串,导致编辑器报错,我用不到所以没有深究。

4、 点击”Generate”生成工程文件

本例中工程文件生成在cegui-deps-0.8.x-src/build,到这个文件夹下打开工程,编译。这一步我从来没遇到过错误。

编译cegui-deps-0.8.x-src就算完成了。下面就是编译CEGUI。

 

编译CEGUI简要说明

这一步我命名为“编译CEGUI”

拷贝资源文件到CEGUI下,同样的方法用CMAKE生成工程文件,但这一步可能会遇到大量错误,其中包括:

编译时候找不到库文件

       首先看看dependencies文件夹下是否有这个库文件,如果没有,很有可能是编译依赖时候没有勾选该库。如果有,很有可能是生成CEGUI工程的时候没有勾选改库。

       比如XML解析库,CEGUI要求至少有一个XML解析库。所以编译依赖时候至少要勾选一个XML解析库。并且这一步也要选择一个XML解析库。并且编译依赖时候和这一步要一致。

链接时候无法解决的符号

       排查方法就是查看VS工程中的链接设置,如果没发现链接需要的库文件,但你又确定库文件已经在dependencies文件夹下面了。那说明你生成CEGUI工程文件时出了错误。

以上两个错误均在下文可以得到100%解决

运行期的崩溃

       我在使用过程中遇到几次崩溃。怀疑原因很多,可能是我编译依赖的DLL和程序不匹配。CEGUI本身也有一些BUG。请尽量使用第一步生成出来的DLL和LIB文件来运行CEGUI。如果还是不能解决,只能依靠调试了。

编译时源码中的字符串错误

       我在VS2005下使用,源码中有些字符串可能因为编码问题导致编译错误,

       工具->选项->文本编辑器->自动检测不带签名的UTF-8编码

不过即使这样还是有一些不能解决,删掉那些字符串。

 

编译CEGUI开始

1、 将cegui-deps-0.8.x-src/build文件夹下编译出来的dependencies文件夹拷贝到cegui-0.8.3目录下

2、 同样打开Cmake,Configure

勾选CMAKE界面上的Grouped和Advanced后,选项分为以下几类

 

未分类

UngroupedEntries

 

库文件设置

Boost

CORONA

D3DX11EFFECTS

DIRECTFB

DIRECTXSDK

DOXYGEN

EXPAT

FREEIMAGE

FREETYPE

FRIBIDI

GLEW

GLFW

GTK2

IL

ILU

IRRLICHT

 

CEGUI设置

CEGUI

 

CMAKE基本设置

CMAKE

 

2.1 这里说一下库文件设置

首先你要明白库文件和配置之间的依赖关系。比如OpenGL依赖freetype和GLEW 、glfw等。这些你可以在实践中总结出来。这里不一一列举。

 

       以GLEW为例,GLEW是OpenGL的扩展库,如果你用到了OpenGL,要设置这个库。当然,如果你用不到,可以忽视它。

因为我们拷贝了dependencies到cegui-0.8.3下,可以看到这里已经有了一些默认设置。如果你没有拷贝可能不会出现这些设置。不过可以看到有些部分依然没有设置。比如GLEW_LIB, GLEW_LIB_STATIC

可以推测这些库的含义。这里我们用GLEW_LIB_DGB的路径复制到GLEW_LIB。用GLEW_STATIC_DGB的路径复制到GLEW_LIB_STATIC

变成一下这样。


这样GLEW库就完全设置好了。同理设置每个你即将用到的库。

每一个库都包含上述选项。

XXX_H_PATH                          库头文件

XXX_LIB                                 动态库的release版lib

XXX_LIB_DGB                        动态库的debug版lib

 

XXX_LIB_STATIC                    静态库release的lib

XXX_LIB_STATIC_DBG           静态库debug版

最好都填上。这里我用debug版替代了release版。但动态库和静态库不能相互替代!!!

 

2.2  CEGUI设置部分

 

图片解析

CEGUI_BUILD_IMAGECODEC_CORONA

CEGUI_BUILD_IMAGECODEC_DEVIL

CEGUI_BUILD_IMAGECODEC_FREEIMAGE

CEGUI_BUILD_IMAGECODEC_PVR

CEGUI_BUILD_IMAGECODEC_SILLY

CEGUI_BUILD_IMAGECODEC_STB

CEGUI_BUILD_IMAGECODEC_TGA

解析资源的时候需要用到图片,选择图片解析器


脚本

CEGUI_BUILD_LUA_GENERATOR

CEGUI_BUILD_LUA_MODULE

CEGUI_BUILD_PYTHON_MODULES


渲染器选择

CEGUI_BUILD_RENDERER_DIRECT3D10

CEGUI_BUILD_RENDERER_DIRECT3D11

CEGUI_BUILD_RENDERER_DIRECT3D9

CEGUI_BUILD_RENDERER_IRRLICHT

CEGUI_BUILD_RENDERER_OGRE

CEGUI_BUILD_RENDERER_OPENGL

CEGUI_BUILD_RENDERER_OPENGL3

CEGUI_BUILD_RENDERER_OPENGLES

指明CEGUI库支持哪些渲染器,多多益善

 

XML解析器

CEGUI_BUILD_XMLPARSER_EXPAT

CEGUI_BUILD_LIBXML2

CEGUI_BUILD_RAPIDXML

CEGUI_BUILD_TINYXML

至少选择一个XML解析器!!!


正则表达式

CEGUI_HAS_PCRE_REGEX

 

内存分配

CEGUI_CUSTOM_ALLOCATORS

CEGUI_CURSTOM_ALLOCATORS_INCLUDE

 

FREETYPE选择

CEGUI_HAS_FREE_TYPE

选择OpenGL必须选择该项,不然运行时提示OpenGL不支持Freetype。程序就退出了。

 

编译例子

CEGUI_SAMPLES_ENABLED

勾选本选项将编译例子


例子中渲染器选择

CEGUI_SAMPLES_USE_DIRECT3D10

CEGUI_SAMPLES_USE_DIRECT3D11

CEGUI_SAMPLES_USE_DIRECT3D9

CEGUI_SAMPLES_USE_DIRECTFB

CEGUI_SAMPLES_USE_IRRLICHT

CEGUI_SAMPLES_USE_OGRE

CEGUI_SAMPLES_USE_OPENGL

CEGUI_SAMPLES_USE_OPENGL3

勾选需要编译的例子以及例子中用那些渲染器。例子中的渲染器必须是已经被上述支持的,这点很重要。

值得一提的是:如果你选择了例子中使用多个渲染器。每次程序运行都会弹出一个渲染器选择的列表框。很烦。不如只选一个。

 

CEGUI字符串类选择

CEGUI_STRING_CLASS

1 为作者自制的CEGUI::String。支持多国语言。UTF到char转换

2std::string          便于调试

3std::basic_string

这些可以鼠标悬停在选项上获得提示


其他没研究过的

CEGUI_STATIC_IMAGECODEC_MODULE

CEGUI_USR_FRIBIDI

CEGUI_USR_MINIDIDI

CEGUI_HAS_DEFAULT_LOGGER

CEGUI_BUILD_SHARED_LIBS_WITH_STATIC_DEPENDENCIES

CEGUI_BUILD_STATIC_CONFIGURATION

CEGUI_BUILD_SUFFIX

CEGUI_HAS_MINIZIP_RESOURCE_PROVIDER

CEGUI_INSTALL_WITH_RPATH

CEGUI_MSVC_STATIC_RUNTIME

CEGUI_OPTION_DEFAULT_IMAGECODEC

CEGUI_OPTION_SAFE_LUA_MODULE

 

好了,经过设置可以点”Generate”生成工程文件了。然后打开编译。可能会遇到各种错误。但不外乎上述几种。

 

 

运行例子

将samples_framework设置为运行项目,调试运行。

 

会提示没有Samples.xml啊。

把cegui-0.8.3\build\datafiles\samples拷贝到E:\myProjects3\cegui-0.8.3\build\datafiles下面

 

然后就是找不到DLL了。有几种方法解决这个问题。

具体见这篇文章http://www.cnblogs.com/waterlin/archive/2011/10/31/2230341.html

总结就是:"工程属性" ==> "调试" ==> "环境"里,添加类似如下所示的内容

 PATH=%PATH%;D:\myProjects\cegui-0.8.3\dependencies\bin,就是把DLL所在目录添加到临时的环境变量。


最后还会有一些例子运行崩溃。或者有问题。

找到cegui-0.8.3\build\datafiles\samples\samples.xml。打开会看到很多例子。删掉有问题的。再运行。

我删掉了运行期有问题的。只留下如下几个demo

 CEGUIHelloWorldDemo

CEGUIEffectsDemo

CEGUIFontDemo

CEGUIDragDropDemo

CEGUIGameMenuDemo

CEGUIHUDDemo

CEGUIInventoryDemo

CEGUIMinesweeper

CEGUIScrollablePaneDemo

CEGUITabControlDemo

CEGUITreeDemo


运行时候崩溃。崩溃位置位于

RenderingSurface::~RenderingSurface

CEGUI_DELETE_AO d_windows[i];

删掉Window.cpp 第1133行 syncTargetSurface();就可以了。具体原因未知。正在查。


最后:向CEGUI代码致敬,向作者致敬。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值