vs2005环境下编译CEGUI 0.6.0(转kun(小龙))

 原文: http://blog.csdn.net/kun1234567/archive/2008/04/08/2259450.aspx

1、编译CEGUI发布版源代码

 


 

 注: 现在网上还没有关于如何在VS2005中编译CEGUI 0.6.0的文章,但是对于发布版来说,0.5.0和0.6.0的编译没有任何区别。
我更改了原著中关于CEGUI 相关版本和资源URL,特此声明。

CEGUI官方网站:http://www.cegui.org.uk/


2008.4.12
CEGUI 0.6.0的源代码里已经实现了D3D9的渲染层,如果你需要从源代码级开始编译,则需要安装DX9.0c SDK. 如果不想安装DX9 SDK,则需要把DirectX9GUIRenderer项目排除掉。


 

该文章转载自 光线引擎官方论坛 论坛首页 -> 光线引擎交流 -> cegui界面 -> [原创]vs2005环境下编译CEGUI
URL:
http://www.lightengine.cn/bbs/dispost.asp?boardid=16&postid=73
作者:逍遥游
时间:2008-2-24 12:56:46

一、下载CEGUI0.6.0源代码包,
http://jaist.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-0.6.0.zip 。

二、下载依赖文件包dependencies package,
http://nchc.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip
 。

三、解压CEGUI源代码包,将dependencies解压后,复制到CEGUI源代码根目录下。

四、进入CEGUI代码目录下的makefiles文件夹,打开premake目录,执行build_vs2005批处理文件。

五、好了,打开CEGUI方案(就是在makefiles/premake文件夹中生成的CEGUI.sln,小龙注),现在就可以开始编译了,注意要选择“Debug”和“'Release”生成相应的版本。

六、进入CEGUI代码Bin和Lib,看看你的成就吧!

备注:打开工程后,不用更任何设置。

 


  以下就是原创啦


 

2、编译使用SVN得到的CEGUI源代码

1、得到源代码

1、下载SVN,http://tortoisesvn.net/downloads,注意它针对32位和64位操作系统有2个不同的版本,下载的时候请注意区分下。

2、安装后,新建一个文件夹,这里假设名字为cegui

3、对它右键,选择SVN Checkout...

4、在弹出的对话框中, URL of repository:填写http://crayzedsgui.svn.sourceforge.net/viewvc/crayzedsgui/cegui_mk2/

5、点击OK。这样就把最新的代码下载下来了。

需要注意的是,使用这种方式下载下来的代码,可能是正在进行改动,或者调试中的代码。相信找到这里来的人多是和我一样的新手程序员,所以我们还是不要随便使用SVN的提交功能,只潜水下最新代码就好了:)

2、编译源代码

1、下载依赖文件包dependencies package
http://nchc.dl.sourceforge.net/sourceforge/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip 。

2、为了统一,解压缩后将dependencies放到cegui同级的目录,实际上在生成.sln操作之前,放哪都可以。

2、下载premake.exe
http://nchc.dl.sourceforge.net/sourceforge/premake/premake-win32-3.5.zip

3、将premake.exe复制到 cegui/cegui_mk2/trunk/project/premake文件夹

4、执行bulid_vs2005.bat,将会在同级目录下生成CEGUI.sln。从这里开始,与直接编译发布版没啥区别了。
需要注意的是,[项目和解决方案]-[VC++目录] 中关于 dependencies package 的路径可能不正确。在编译之前需要确认一下。

5、截止本文发表之时,文件CEGUIFactoryModule.cpp 的头文件路径设置不正确。
原为: "../WindowRenderSets/Falagard/include/FalModule.h"
改为: "WindowRenderSets/Falagard/FalModule.h"
就可以编译通过了。

6、去cegui/cegui_mk2/truck/bin/lib文件夹看看生成的东西吧。

7、生成的tolua++cegui_st_d.exe无法直接运行,因为缺少lua_d.dll,该DLL文件在dependencies/bin目录下。


 3、配置刚刚编译好的CEGUI

1、如果我们需要运行一个包含CEGUI的程序,除了需要我们刚才编译出来的一堆 xxx_d.lib。
还需要CEGUI依赖文件包里的.dll,编译则需要.lib。

2、之前如果你没有动sln的设置的话,应该是在Debug_Static模式下进行编译的,但是一般我们是不需要Static类型的LIB的。所以请使用Debug模式重新编译一次。(OK,我很坏)

3、我们手动建立一个SDK目录,结构模式如下:

CEGUI0.6.0SDK
        --- include  // 头文件
        --- lib           // 库文件
        --- output    // 生成的程序所需要的DLL,以前我们直接扔进了System32文件夹,现在我们会把程序的生成目录设置到这里,当然,你也可以把这些DLL扔到System32文件夹。

4、复制CEGUI里相关的文件
cegui_mk2/truck/cegui/include文件夹下的全部文件拷贝到include文件夹。
将cegui_mk2/truck/lib中重新生成的 xxx_d.lib全部拷贝到lib文件夹。

5、复制CEGUI 依赖文件包里相关的文件
dependencies/include中的文件全部拷贝到include文件夹。
dependencies/lib中的文件全部拷贝到lib文件夹。
dependencies/bin中的文件全部拷贝到output文件夹

6、设置VS2005  工具-选项-项目和解决方案-VC++目录 里相关的include 和lib的查找路径。


 

 4、编译CEGUI例子

使用CEGUI时,需要自己提供Renderer(渲染层模块)。
因此要编译CEGUI的例子,你至少要装OpenGL或者DX 8.1以上,或OGRE的SDK。
这里我使用的是DX9.0 SDK,November 2007
在进行以下步骤之前,请确定自己的VS2005至少配置了一个图象库的SDK。

 



事实上,VS自带DX8.1 SDK 和 OpenGL基础SDK。如果没有特别安装SDK,依然可以编译通过,不过需要调整项目所包含的文件。

 

 



2008.4.12
如果在编译的时候提示找不到D3D9.H,首先排除D3D9相关的东西,包括config.h里的宏定义,将
#define CEGUI_SAMPLES_USE_DIRECTX_9注释。

 

另外,我在不装SP1的VS2005上只使用OpenGL渲染层,程序编译通过,但是运行时,系统提示:应用程序正常初始化(0XC0150002)失败。暂时未解决....

 


 

1、使用premake生成工程

1、直接运行 bulid_samples_vs2005.bat,会生成一个CEGUISamples .sln。

2、运行这个SLN,里面就很多啦。注意看一下这个工程里各个项目的项目依赖关系和生成顺序,单独生成各个项目的EXE文件。

3、cegui/cegui_mk2/truck/bin里会生成各个项目的exe文件,运行这些文件需要dependencies/bin目录下的DLL。建议把所有DLL都拷贝到cegui/cegui_mk2/truck/bin文件夹下。

4、编译一下看看?

2、手动建立工程

1、编译公共文件

使用premake生成固然方便,但是无法知道这些个SLN的具体设置,实在是心里没底。
现在我们以Sample.FalagardDemo1为例,手动使例子工程跑起来。

1、创建一个新工程(解决方案),我们假定叫CEGUI_Sample_sln

2、为该工程添加一个新项目,我们假定叫CEGUI_Sample_Comm

3、将cegui/cegui_mk2/truck/Sample/common/include件夹内的文件(和对应的CPP文件)添加到刚才创建的新项目CEGUI_Sample_Comm中:
注意路径问题,
我是直接放同一个文件夹CEGUI_Sample_sln / CEGUI_Sample_Comm / CEGUI_Sample_Comm / 里了

CEGuiBaseApplication.h                              // *必须的
CEGuiD3D81BaseApplication.h                 // DX8.1渲染层
CEGuiD3D9BaseApplication.h                   // DX9.0渲染层 如果没有安装DX9.0SDK,就不要包含
CEGuiIrrlichtBaseApplication.h                   // Irrlicht渲染层 如果没有安装Irrlicht1.4SDK,就不要包含
CEGuiOgreBaseApplication.h                     // Ogre渲染层    如果没有安装Irrlicht1.4SDK,就不要包含
CEGuiOpenGLBaseApplication.h               // OpenG渲染层 如果没有安装任何SDK,就是必须的
CEGuiRendererSelector.h                            // *必须的
CEGuiSample.h                                              // *必须的
CEGUISamplesConfig.h                               // 该文件在你使用Ogre或OpenGL时是必须的
Win32AppHelper.h                                         // 该文件在你使用DX9.0渲染层时是必须的
Win32CEGuiRendererSelector.h                // *必须的

4、在 解决方案资源管理器 中选择 CEGUI_Sample_Comm。修改以下各个项目属性:

项目-属性-配置属性-常规-输出目录:先前我们建立的CEGUI0.6.0SDK/output
项目-属性-配置属性-常规-中间目录:
./Debug
项目-属性-配置属性-项目默认值-配置类型:动态库(.dll)。
项目-属性-配置属性-项目默认值-字符集:使用多字节字符集。
项目-属性-配置属性-C/C++ - 预处理器-预处理定义:添加“CEGUISAMPLE_EXPORTS”。 
项目-属性-配置属性-连接器-输入-附加依赖项:
CEGUIBase_d.lib
freeglut_d.lib
OpenGLGUIRenderer_d.lib
DirectX9GUIRenderer_d.lib
GLU32.lib

5、编译一下? 如果正确的话,output文件夹里会多出一堆DLL。

2、编译例子Sample.FalagardDemo1

1、为CEGUI_Sample_sln添加第2个项目,我们假定叫FalagardDemo1。

2、将FalagardDemo1的源代码添加(拷贝)到这个项目里来。

3、在 解决方案资源管理器 中选择 CEGUI_Sample_Comm。修改以下各个项目属性:

项目-属性-配置属性-常规-输出目录:先前我们建立的CEGUI0.6.0SDK/output
项目-属性-配置属性-常规-中间目录:
./Debug
项目-属性-配置属性-项目默认值-配置类型:Windows应用程序(.exe)。
项目-属性-配置属性-项目默认值-字符集:使用多字节字符集。
项目-属性-配置属性-C/C++ - 预处理器-预处理定义:改为
“_CRT_SECURE_NO_DEPRECATE”
“HAVE_CONFIG_H”
“_DEBUG”
项目-属性-配置属性-连接器-输入-附加依赖项:
../../../../output/CEGUI_Sample_Comm.lib
(这个路径根据自己实际情况进行设置,或者:项目-项目依赖项:选择依赖于CEGUI_Sample_Comm项目)
CEGUIBase_d.lib

4、编译一下?调整工程属性可以选择从哪个项目启动。

5、OK,我编译通过了。但是还是出了问题:运行时出现找不到 schemes。路径问题,解决方法是:将cegui/cegui_mk2/truck/datefile拷贝到CEGUI0.6.0SDK目录下,同时也拷贝到CEGUI_Sample_sln目录下。

6、再运行一下看看?应该出来了吧。但是datefile的相对路径是可以更改的,
在文件CEGuiBaseApplication.cpp中:

#ifndef CEGUI_SAMPLE_DATAPATH
    #define CEGUI_SAMPLE_DATAPATH "../datafile"
#endif
可以修改成你想要的任意路径,不过这样的话,你的datefile文件夹就又要挪位置了。
(今天3月3,按照家乡的习俗,要吃煮鸡蛋~)


好了,现在终于把配置CEGUI弄完了。现在CEGUI使用环境,就跟使用普通SDK一样了。

这么大费周折是为了能对CEGUI进行修改,如果碰到某个控件或功能不满足项目需求,直接使用SDK的话,就没办法改原代码了。

最开始的时候不知道CEGUI是多项目工程。。把全部的CPP和H文件都导入到一个项目里。。。结果报133个错误,628个警告.....当时哭死了..囧囧囧

虽然最后我们看到了运行中的程序,但是我这样大锅饭似的设置是不正确的。因为CEGUI采用了许多模块,你可以根据项目需求来有选择性的进行裁减和组合。不过这个对于新手来说,还是太高深了,等我们进一步熟悉CEGUI的方方面面之后再来对它进行改造吧``

不管怎么说,我们的实验环境总算是搭建完毕~

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、付费专栏及课程。

余额充值