编译Urho3D库

DinS          Written on 2017/11/23

本专题开始介绍Urho3D,一个跨平台、轻量级的2D/3D游戏引擎。

市面上游戏引擎那么多,为什么选择Urho3D呢?这个跟项目需求有关,我特别看重其轻量级和完善的脚本支持。不过这些都是后话了,本文介绍如何编译Urho3Dk库。

这里以Urho3D_1.7在win7_64位下,使用VS2015开发为例搭建环境。

一、安装必要软件和包

第一步,进官网https://urho3d.github.io/,点击download:

进入1.7目录,找到Source并下载:

顺带提一句,这里有各种编译好的库版本,但是我下载了一个windows版的lib尝试,结果失败了。可能是打开方式不对。因此这里介绍从source开始编译,保证不会出差错。
下载下来是个压缩包,解压。

这里还带了个windows的,可以看看里面做好的exe例子和文档。
解压出来的内容很多,几乎可以不管,但是有一个东西必须要看看,即Source/Samples,这里面是各种例子的源代码,学习的极好素材。

到这里把Urho3D放一放,开始做别的准备工作。
VS2015的安装就不说了。
要从source编译Urho3D,需要Cmake,上官网下载

找对应版本,我这里下载的是圈红的那个,下载完后找到安装包安装:

安装的时候注意这个选项:

默认是不加入环境变量的,但是最好在这里选择加入系统环境变量,避免之后麻烦。

二、方式一:通过命令行编译

安装完Cmake后可以有两种方法。
一种方法是通过Urho3D提供的.bat,具体方式是调用控制台,传入命令行来编译。
关于命令行的具体说明见https://urho3d.github.io/documentation/1.7/_building.html
进入Urho3D目录,按住shift+右键->在此处打开命令窗口。

输入以下内容:

稍微解释一下,第一个参数就是执行cmake_vs2015.bat,就是左面那个文件,这个bat是Urho3D预先写好的方便用VS2015编译。
第二个是一个路径,告诉cmake将工程生成在该目录下
第三个是编译选项,可以不写。这里写的用意是指定渲染机制。在win平台默认用D3D9渲染,可以显式指定用D3D11(需要提前安装)或者OPENGL。
至于还有什么选项可见上面给出的网址。
回车进行编译:

等待一段时间后应该能够看到这个,表示成功了。
进入那个目录可以发现一堆文件,打开Urho3D.sln:

把配置改成Release,然后All_BUILD:

经过漫长的等待可以看到都build成功了,能够找到生成的lib文件:

其实之所以有这么多项目,是因为加入了47个样例。
以ALL_BUILD为分隔,上面的项目是样例,下面的才是Urho3D的lib。
既然要看效果,那么就找到最具有传统性的HelloWorld,设置为启动项:

然后本地调试即可:

成功完成编译。

另外有几个build参数要特别注意:
URHO3D_SAMPLES如果打开就会带上那47个样例
URHO3D_64BIT如果打开就允许x64配置
URHO3D_C++11如果打开就允许c++11标准
URHO3D_OPENGL这个已经提到过了
URHO3D_STATIC_RUNTIME如果开启就是用静态库,发布时避免安装相关dll

三、方式二:通过cmake编译

另一种方法是使用cmake的GUI,详见https://github.com/urho3d/Urho3D/wiki/Setting-up-Urho3D-on-Windows-with-Visual-Studio,这种方式是more user-friendly。
下面试试这种方法,打开cmake的GUI:

内容都是空的,下面开始选择。
Source填入Urho3D的source目录,build填入要生成的工程所在目录,然后点击Configure。

然后弹出这个窗口,选择合适的编译器。这里选择了VS2015_64位。这样生成的Urho3D库就是64位的。

点击Finish,等待一段时间:

一堆红的,但是不要紧,把上面advance复选框勾上,然后往下拉选择需要的build options。

比如这里勾了c++11,去掉了samples,勾了OPENGL,勾了Static Library
然后点击Generate:

结束后可以看到Done。
之后的事情就差不多了,还是找到生成目录,打开sln,生成。

注意这里只有x64了,因为我们刚刚在cmake中选择的是64位编译器。

编译完可以找到对应lib:

dubeg和release都编译了。

以上就是在Windows上环境搭建过程,其他平台的见官方文档
https://urho3d.github.io/documentation/1.7/_building.html

编译Urho3D库仅仅是第一步,接下来看看如何建立工程,见《Urho3D自建项目》。