//---------------------------------------------------------------------------------------------------------------------------------------------------
//前言:捣鼓了一整天Ogre源代码下引擎环境的构建,从官网WIKI到百度,
//再到谷歌,结合了各种猜想,参考了各种资料,
//最后终于成功的把OGRE从源代码中构建出来了,
//可谓是费尽心机,绞尽脑汁,行弗乱其所为了。。。
//什?什么?好吧,请忽略这最后一句,原谅我的冷笑话无厘头吧!!!
//----------------------------------------------------------------------------------------------------------------------------------------------------
首先,你需要了解从源代码构建Ogre的优点:
源代码中拥有比SDK更多的IDE选择和不同的项目空间/解决方法配置。
同时,这也是通往了解Ogre是如何被设计和生成的学习途径,
你可以在源代码级别调试Ogre程序,看看其中函数之间的关系以及每个函数的作用,
甚至能了解到变量是如何协调工作的。
这也是得到最新改变,出错以及增进的版本的最佳途径。
(也就是说,你可以在源代码下适应更多的IDE平台环境和得到学习。)
好了,说了这么多,我们正式进入正题,可以从源代码开始
构建一个适应于VS2010 IDE的OGRE环境。
(VS2008下的IDE可以参考配置,方法大体是相同的。)
先决条件:
1.从官网下载页面点击"Download a source package",然后选择源代码下载包。
此处我选择最新版的OGRE 1.8.1 Source For Windows。
这里给出下载链接地址:http://www.ogre3d.org/download/source
2.确保电脑上安装了DirectX SDK,建议用Feb10或June10版的,没有的童鞋请到
http://www.microsoft.com/en-us/download/details.aspx?id=6812下载并安装。
3.包含dll,头文件,lib等内容的Dependencies,我们选用OgreDependencies_MSVC_20101231
在Old Microsoft Visual C++ Precompiled Dependencies Package处下载,
(New版的下载链接我这边不知为何进不去。)
下载地址:http://www.ogre3d.org/download/source
3.需要Boost链接库,这是一个线程库,用于分页组件(官方说明是可选择安装,
不过我建议还是用上的好,所谓防患于未然嘛...)
我们用到目前为止最新的boost1.55。
下载地址:http://sourceforge.net/projects/boost/files/boost/1.55.0/
4.需要CMAKE制作工具,用到目前为止最新版的“cmake-2.8.12.2-win32-x86.exe”。
下载地址:http://www.cmake.org/cmake/resources/software.html
5.需要Visual Studio系列IDE,可以选择VS2008,VS2010,VS2012,这里以VS2010为例。
(注意,需要打SP1补丁,也就是Service Pack 1, 如果没打补丁,CMAKE工具使用中可能会出错。)
好了,当你准备好这些工具后,便开始我们的OGRE搭建之旅吧!!
(1).将ogre_src_v1-8-1.exe安装至适当的目录中,此处安装至G:\OGRE_2010,
安装完成后会出现这样的文件。
(2).将Dependencies解压至该文件目录下,如图。
(3).打开Dependencies中src的OgreDependencies.VS2010.sln,
分别在Debug和Release下生成解决方案,完成后如图。
(提示:刚装DirectX SDK的同学记得将include和lib包含上去)
(5).编译boost库。
#1.将boost_1_55_0解压,此处是G:\根目录。
#2.编译bjam。
<1>.从开始菜单处的vs2010的工具菜单进入命令提示窗口
(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2010”,
指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt(命令提示)” )
<2>.输入cd G:\boost_1_55_0定位到该文件目录下,然后输入bootstrap.bat建立Boost.Build engine,
DOS下运行完成后会看到这样的画面,并且在G:\boost_1_55_0下出现了b2.exe和bjam.exe这样两个文件。
(注意:此处及以下请根据所安装的目录的操作,请勿盲目跟从。)
出现b2.exe和bjam.exe
#3.设定编译环境(为了去掉编译器警告)
打开G:\boost_1_55_0\tools\build\v2\user-config.jam,并对其msvc版本进行修改,
原来:
# -------------------
# MSVC configuration.
# -------------------
# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;
# Configure specific msvc version (searched for in standard locations and PATH).
# using msvc :8.0 ;
修改之后为:
# -------------------
# MSVC configuration.
# -------------------
# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;
# Configure specific msvc version (searched for in standard locations and PATH).
# using msvc :10.0 ;
(若是想编译成VS2010版请改成10.0,
PS:我用的文本编辑工具是nopepad++,很方便的工具,附上一张修改截图。)
#4.最终编译boost库
在DOS窗口中输入以下命令来执行bjam.exe:
bjam stage ^ --without-python ^ --toolset=msvc-10.0 ^ --build-type=complete ^
--stagedir="G:\boost_1_55_0\vc10" ^ link=static ^ runtime-link=static
runtime-link=shared ^ threading=multi ^ debug release 输完后按回车~
(PS:编译至少需要半个小时,这个时候请不妨听听音乐,玩玩游戏,放松放松心情吧O(∩_∩)O)
先上图:
执行等待中......
stage:表示只生成库(dll和lib),
" ^ "符号表示与下面的命令连接,输入" ^ "后按回车
便可以继续输入命令(此处注意空格,不要把两个本应该分开的命令连起来了),
without/with:表示编译或不编译哪些库
toolset:表示编译工具集,VS2010为msvc-10.0
build-type:表示编译类型,complete为完全编译
stagedir:表示编译生成文件路径,此处是G:\boost_1_55_0\bin\vc10
link:表示生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。
runtime-link:表示动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static。
threading:表示单/多线程编译。默认指定为单线程,multi表示多线程方式,single表示单线程方式。
debug/release:表示编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。
#5.看到这样的画面后便表示boost编译成功了。
#6.对boost进行简单测试。
新建一个控制台WIN32工程,然后在新建的CPP中输入以下代码:
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}
然后在工程属性中添加包含目录G:\boost_1_55_0和库目录G:\boost_1_55_0\vc10\lib)
Boost会自动包含静态链接库,所以不用手动添加,好了,按F5运行一下,
若是出现黑色窗口则表明测试成功,我们编译的boost库可以使用!!!
#7.请注意,在编译过程中会产生中间过程文件,由于比较占空间,
现在编译成功之后可以删除这些中间过程文件。(竟然有2.75G之多)
(默认为G:\boost_1_55_0下的bin.v2 )
(5).CMAKE的使用。
#1.将下载的Cmake-2.8.12.2安装至目录,我将其安装至G:\根目录。
#2.设置环境变量(为了Cmake的Configure能正确的配置出boost和DirectX还有Ogre)
添加环境变量: BOOST_INCLUDEDIR G:\boost_1_55_0
BOOST_LIBRARYDIR G:\boost_1_55_0\vc10\lib
BOOST_ROOT G:\boost_1_55_0
若无DXSDK_DIR,添加 DXSDK_DIR G:\DirectX\(你所安装目录)
若无OGRE_HOME,添加 OGRE_HOME G:\OGRE_2010\ogre_src_v1-8-1
#3.打开G:\CMake 2.8\bin下的cmake-gui.exe ,
在Where is the source code中输入要编译的源代码位置,此处为G:/OGRE_2010/ogre_src_v1-8-1
在Where to build the binaries中输入要建立Ogre图形引擎的位置,此处为G:/OGRE_2010/Ogre_Build
点击Configure,配置编译器,选择Visual Studio 10.0, 点击Finish开始配置,等待完成。
(VS2010版本选择Visual Studio 10.0)
完成后截图:
然后我们查看一下BOOST有没有正确配置:
然后再看以下DirectX有没有正确配置:
若是没有正确配置,请检测以下环境变量有没有设置好,实在不行,就参照上面两幅图手动配置,
我这里的DirectX就是手动配置的。
(注意 :若是手动配置Boost, Debug的lib是带gd的,Release是不带s,也不带gd的。)
配置好之后,再按Configure,会添加手动的配置和默认配置进行再次配置,
此处显示出可以再配置DirectX 11,
然后再次按下Configure,等显示出全部变白后,就表示全部添加到默认配置了,如图:
#4.正式生成
此时便可以按下Generate生成了,生成完成后,底下会显示Generate done
(6).编译构建Ogre
#1.打开G:\OGRE_2010\Ogre_Build下的OGRE.sln
#2.分别在Debug和Release下生成解决方案。
附上一张成功启动后的截图:
好了,今天的教程就到这里了,祝大家愉快成功!!!