• 【转】vs2005环境下编译CEGUI 0.6.0


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

    2008.4.9
    1、修改了 第4节.前言,补充了关于图象库SDK与CEGUI的关系,添加了DX9.0C SDK的连接
    2、修改了 第4.2.1.2节,补充了 两个项目之间的依赖关系。

     2008.4.12
    1、修改了 第1节 前言,补充了关于DX9的相关信息。
    2、修改了 第4节 前言,补充了关于 找不到d3d9.h之类的一系列错误。


    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”
    项目-属性-配置属性-连接器-输入-附加依赖项:
    http://www.cnblogs.com/http://www.cnblogs.com/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的方方面面之后再来对它进行改造吧``

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

  • 相关阅读:
    linux内核系统调用和标准C库函数的关系分析
    Linux下内存映射文件的用法简介
    Hi35xx 通用GPIO 使用篇(板子3G电源控制脚说明)
    关于Linux用户名
    关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解
    PixelFormat 图像颜色的数据格式
    Ubuntu 搭建svn服务器 ,以及常见错误解决方案
    安装VisualSVN Server 报错The specified TCP port is occupied
    SVN服务器搭建和使用(三)
    SVN服务器搭建和使用(二)
  • 原文地址:https://www.cnblogs.com/shadow21/p/1855868.html
Copyright © 2020-2023  润新知