Ogre 1.8.1原始碼編譯和錯誤修改
寫在一邊,最好不要略過的話。
這篇blog是按照編譯–>出錯–>解決錯誤–>再編譯 的方式寫的。
我認為這種逐步改錯的過程有助於學習和理解,所以這樣寫的。
最節約時間的方法,就是先全部看完,解決所有的錯誤,然後編譯,一次成功。
一、編譯生成Ogre 1.8.1原始碼
0、我的系統環境
作業系統:64位Windows7
編譯環境:Visual Studio 2013。
編譯ogre1.8.1原始碼。
1、下載軟體和原始碼
(1)cmake安裝檔案下載:
http://www.cmake.org/download/
我下載的是cmake-3.2.1-win32-x86.exe
(2)下載ogre的Visual Studio Dependenciesogre 在如下連結:
http://sourceforge.net/projects/ogre/files/ogre-dependencies-vc%2B%2B/1.7/OgreDependencies_MSVC_20101231.zip/download
(3)下載ogre原始碼在如下連結:
http://www.ogre3d.org/download/source
我下載的是OGRE 1.8.1 Source For Windows。
下載後文件如下圖:
2、安裝cmake3.2.1
安裝cmake到電腦,步驟略。
3、解壓縮原始碼
- 解壓縮ogre_src_v1-8-1.exe和OgreDependencies_MSVC_20101231.zip檔案。
- 將OgreDependencies_MSVC_20101231資料夾下的Dependencies資料夾放到ogre_src_v1-8-1資料夾下。
- ogre_src_v1-8-1資料夾移動到適當的位置。這裡我將ogre_src_v1-8-1檔案放在D盤根目錄下。
4、編譯Dependencies
進入D:\ogre_src_v1-8-1\Dependencies\src資料夾,開啟sln檔案。
由於沒有vs2013的sln檔案。先開啟vs2013,從這裡開啟OgreDependencies.VS2010.sln檔案,會提示轉換對話方塊,確定即可。選擇解決方案平臺 x64,編譯Debug版本解決方案。
有編譯錯誤,錯誤提示如下:
分別在幾個錯誤提示的檔案中新增程式碼如下:
#include <algorithm>
- 編譯Debug版本解決方案通過,再編譯Release版本,通過。
- Dependencies編譯完成,關閉vs2013.
5、用cmake生成程式碼
- 開啟cmake_gui.exe。
- source code 中選擇資料夾:D:\ogre_src_v1-8-1。
- 在 D:\ogre_src_v1-8-1資料夾下新建目錄:Build。
- build of binaries中選擇資料夾:D:\ogre_src_v1-8-1\Build
- 點選“Configure”按鈕,選擇對應的vs版本。我選擇的是vs2013。
“完成”後,結果如下圖。
再次點選“Configure”按鈕,結果如下圖。
點選“Generate”按鈕,結果如下圖。
cmake生成程式碼完成。關閉cmake_gui.exe。
6、用vs編譯ogre原始碼
- 開啟 D:\ogre_src_v1-8-1\Build\OGRE.sln檔案。
- 選擇解決方案平臺x64,編譯生成 debug版本的ALL_BUILD專案。
這裡編譯需要等待10分鐘。 - 編譯成功。
- 再生成INSTALL專案。
如果這個時候有錯誤,很可能是因為vs2013啟動的時候不是用管理員身份。關閉vs,再“以管理員身份執行”Visual Studio 2013,開啟OGRE.sln檔案,生成INSTALL專案,就可以成功。
-編譯生Release版本的ALL_BUILD專案和INSTALL專案。
到這裡你就已經成功編譯生成的Ogre引擎的的原始碼!
辛苦~(≧▽≦)/~啦啦啦!先撒花,撒花!休息,休息!然後我們還用很多事情要忙!
二、執行示例程式碼,修改相關配置bug
下面我們將執行Ogre自帶的示例檔案,最近新下載的Ogre原始碼產生一個以前沒有的限制。下面要耐心的改bug了!
1、執行SampleBrowser專案
將SampleBrowser專案“設為啟動專案”,除錯執行。
錯誤提示如下:
將D:\ogre_src_v1-8-1\Dependencies\bin\Debug資料夾下的OIS_d.dll檔案和 cg.dll檔案複製到D:\ogre_src_v1-8-1\Build\bin\debug資料夾下。
再執行。
錯誤提示如下:
右擊SampleBrowser專案,進入專案屬性頁面,
配置屬性–>除錯–>工作路徑 修改為: $(TargetDir)再執行。已經可以看見一個顯示黑色視窗的對話方塊運行了,然後提示錯誤。
錯誤提示如下:
這個錯誤是由於Ogre配置禁止了zip檔案的解析,所以在載入resources_d.cfg檔案中的資源的時候無法解析Zip格式的資源。
有一個傻方法可以解決,就是將D:\ogre_src_v1-8-1\Build\bin\debug\resources_d.cfg檔案中Zip資源都手動解壓縮,然後再新增到資源列表。
例如:Zip=D:/ogre_src_v1-8-1/Samples/Media/packs/SdkTrays.zip
首先將SdkTrays.zip解壓縮到D:/ogre_src_v1-8-1/Samples/Media/packs/SdkTrays資料夾下。
然後,在resources_d.cfg檔案中將上面那行改寫成
FileSystem=D:/ogre_src_v1-8-1/Samples/Media/packs/SdkTrays
然後再修改其它Zip。看起來還很多,這應該也挺麻煩的。
那我們還可以採用第二種方法,讓Ogre引擎支援Zip檔案的解析。
其實Ogre引擎中已經有支援Zip檔案的程式碼,幾年前我編譯的時候是配置好的,現在我們只需要自己配置編譯,讓它支援Zip檔案的解析就可以一勞永逸了。
具體步驟如下:
在OgreMain專案中“新增現有項”
D:\ogre_src_v1-8-1\OgreMain\src資料夾下的OgreZip.cpp檔案,
和D:\ogre_src_v1-8-1\OgreMain\include資料夾下 OgreZip.h檔案。將 OgreMain專案中D:\ogre_src_v1-8-1\Build\include\OgreBuildSettings.h檔案中44行程式碼
#define OGRE_NO_ZIP_ARCHIVE 1
改為:
#define OGRE_NO_ZIP_ARCHIVE 0
OgreMain專案–>屬性–>聯結器–>輸入–>附加依賴項 中新增一行如下:
..\..\Dependencies\lib\debug\zziplibd.lib編譯生成OgreMain專案。成功。
編譯生成 ALL_BUILD專案,成功。
- 執行SampleBrowser專案,可以看到Ogre自帶的例項。