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的方方面面之后再来对它进行改造吧``
不管怎么说,我们的实验环境总算是搭建完毕~