1. 程式人生 > >Ogre 1.8.1原始碼編譯和錯誤修改

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自帶的例項。

這裡寫圖片描述