首先,强烈建议先根据官方文档做好准备工作,准备相关的依赖库,下面这个是另一个作者的准备过程,可以参考;
第三方依赖的编译以及OGRE的前期准备工作在这 写的很详细,虽然是英文的,但是想编译源码的估计都能看懂;
文中提到的“Fix conflicting definition of snprintf”我并没有需要用到;
编译依赖库的过程就不多说了,上面的链接中有详细的说明怎么做,并且不会出现太大的问题,下面就来说说编译OGRE源码的一些问题;
首先先把使用cmake创建源码编译工程的截图贴上来:
这里面的一些选项和上面链接中是不一样的,不过大体也就是对应左边的项在右边填上依赖库的完整路径,这里我是把Debug版本和Release版本都添加了;
然后就是打开OGRE.sln准本开始源码编译了;
如果你是直接开始编译的,并且之前的依赖库准备工作没有出错的话,那么你应该会遇到以下错误:
严重性代码说明 项目 文件 行禁止显示状态
错误 C2661“std::condition_variable::wait_until”: 没有重载函数接受 3 个参数Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex734
错误 C2661“std::condition_variable::wait_until”: 没有重载函数接受 3 个参数Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex734
严重性代码说明 项目 文件 行禁止显示状态
错误 C2661“std::condition_variable::wait_until”: 没有重载函数接受 3 个参数Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex861
错误 C2661“std::condition_variable::wait_until”: 没有重载函数接受 3 个参数Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex861
这个貌似是这个版本源代码中的一个bug,这里我的做法是直接卸载项目 Sample_VolumeTex 反正他只是一个样例项目----其实是我当时看源码看了半天没发现错误,然后不知道怎么修复。。,改完这里呢,还需要在 源代码目录(编译项目目录,不是解压的源代码目录)下的 /Samples文件夹中的 cmake_install.cmake文件中把
第74行: include("D:/VSProject/build/Ogre/Samples/VolumeTex/cmake_install.cmake") 用#给注释掉;
或许还会有:
官方论坛上也有人提到过这种错误
Error 1 error MSB3073: The command "setlocal
"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 113
或者相似的错误,这里,我查了一下,大概就是项目生成的顺序不对,或者对相关目录没有写的权限,解决方法大概是以下两种;
1,管理员身份运行VS
2,调整项目生成顺序
但是悲剧的是我两种方法都没有解决问题,这里我参考的是
这篇博客的作者的做法,然后就顺利解决了;
哦对了,如果是编译是选择了发布版还需要安装 NSIS工具,这里安装方法就不多做解释了;
最后运行SampleBrowser.exe的时候如果出现:
的错误,直接把之前编译依赖库时生成的SDL2.dll复制粘贴过来就行了,当然对应Debug版或Release版;
在这贴一个我编译好的文件 链接:http://pan.baidu.com/s/1nuJBVpZ 密码:0766