开源库源代码构建的一般方式(CEGUI举例)

一 CMAKE

首先说一下Cmake的作用, CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似LINUX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 linux 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件

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

二 CEGUI源码构建

打开cmake-2.8.12.1-win32-x86/bin/cmake-gui.exe,首先构建cegui-deps-0.8.x-src,并设置VS2010的编译器,如下图:


       随后进入configure阶段,configure成功后点击Generate按钮即可产生VS2010项目文件了。

       打开VS2010,使用Ctrl+Shift+O打开CEGUI-DEPS解决方案(.sln)文件,选择MinSizeRel方式进行构建,保证产生的lib和dll文件最小(话说cmake生成的Makefile若不采用MinSizeRel的话,产生的二进制文件大得离谱)。成功后,关闭项目,将生成的dependencies文件夹从E:/Develop/cegui-deps-0.8.x-src复制到E:/Develop/cegui-0.8.3中。

       同样的方法用于cegui-0.8.3。下面是设置的截图:

这里要注意勾上下面几个参数:

CEGUI_BUILD_RENDERER_OGRE用OGRE渲染

CEGUI_BUILD_RENDERER_OPENGL 用OPENGL渲染

CEGUI_BUILD_RENDERER_DIRECT3D10 用DX渲染

CEGUI_BUILD_XMLPARSER_EXPAT 用于解析XML文件

CEGUI_HAS_FREE_TYPE 编译CEGUI需要的库

CEGUI_HAS_PCER_REGEX没有的话运行SampleFramework,Sample加载到一半时出现“RegexMatcher Validator”缺失的错误

CEGUI_SAMPLES_开头的文件勾上 用于生产例子程序 否则例子程序不会生产 不要想单独通过例子程序里的cmakelist生成工程 

CEGUI_SAMPLES_USE_上面渲染选择了什么环境 这里对应选择什么环境




       这里有一个问题,因为CEGUI默认的XML解析器并没有设置,我们需要手动设置,这里采用的是CEGUI默认的expatXML解析器,也就是设置CEGUI_BUILD_XMLPARSER_EXPAT为checked。

       如果要采用Irrlicht作为CEGUI的渲染框架,那么需要设置一些环境变量,下面是如何设置Irrlicht为CEGUI的渲染框架,同样的方法还可以让CEGUI采用OpenGL、OpenGL3、Direct3D11来进行渲染。

 

       当configure和generate都成功后,就可以关闭cmake-gui了。打开VS2010,对cegui项目进行构建。下面是VS2010的截图:


       如果在编译的过程中出现无法打开头文件以及无法链接到库的情况,那么可能cmake的路径没有设好。其实很多编译不成功的问题都来自于没有设置好路径。那么在Visual Studio里面的每一个项目中设置路径就能够顺利地编译了。

      但是为毛例子程序编译不成功提示 cegui_target_link_libraries这个命令不认识  但是前面这个命令怎么又认识了cegui_apple_app_setup 懂的太少还有好多坑要挖 cmake是怎么认识这些命令的呢 查了好多资料 没搞定 !!!以后弄明白了再来写上

其实就是个小问题子文件夹cmakelist是依赖父文件夹的cmakelist,sample文件夹的cmakelist依赖整个项目的cmakelist ,不能通过子文件夹下自己的cmakelist生成工程文件 必须通过跟目录下的cmakelist设置参数选项来生成例子工程(都是泪啊 这样的问题弄了这么久  坑!大家别躺坑了)

此外如果编译过程中出现“常量中含有换行符”提示,那是因为字符编码格式可能不一样,我的做法是将有问题的字符串后面添加一个空格,这样的话就不会报类似的错误了,结果也不影响显示。

       生成完毕后,将dependencies/bin里面的文件全部复制到bin中或者配置环境变量,即可顺利运行CEGUISampleFramework-0.8.exe浏览CEGUI的例子。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CEGUI(Crazy Eddie’s GUI http://www.cegui.org.uk)是一个自由免费的GUI,基于LGPL协议,使用C++实现,完全面向对象设计。CEGUI开发者的目的是希望能够让游戏开发人员从繁琐的GUI实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。 CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形也是可以的,比如OGRE、Irrlicht和RenderWare等,关键需求可以简化为二点: 纹理(Texture)的支持直接写屏(RHW的顶点格式、正交投影、或者使用shader实现) 本书截止日时,CEGUI的最新版本是0.6.0(本书的讨论也是基于此版本),本书光盘提供了SDK和全部源码的下载。 除此之外,CEGUI还同步提供了官方界面编辑器LayoutEditor和ImageSet编辑器,以方便UI和图像集的制作。作为界面编辑器,它需要系统级界面以提供编辑器操作,0.3.0版是基于MFC实现的;而在0.4.0版本以后,改为基于wxWidgets(跨平台的本地UI框架,这里的UI指Window操作系统底层,如:Windows、Unix和Mac,详见http://www.wxwidgets.org)实现。 目前将CEGUI作为游戏界面开发的游戏已经有好多种,国内的天龙八部,巨人等游戏就是很好的例子。 CEGUI的功能是非常强大的,而且使用也非常的灵活,可以和脚本配合。可以通过配置文件自定义窗口外观。通过布局文件实现窗口布局等等特性,使得游戏的界面开发更加方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值