VS2013編譯OGRE,只成功編譯1.8的版本

半年前需要用OGRE,由於自己一直用的VS2013編譯器,而OGRE官方並沒有發佈VS13版的公開庫,如果需要只能自己編譯,便用VS2010版的代替了。現在還是需要裏面的功能,只能自己想辦法弄個VS2013版的OGRE的庫了。

1.別人編譯的VS13+OGRE的庫,這個在百度上都能搜到,但是添加到項目之後,運行老出錯,看錯誤類型是庫函數找不到函數入口啥的,應該是lib有問題。這個方法放棄了。

只好自己想辦法編譯了。

所需的工具:

(1)TortoiseHg,這個軟件能夠克隆源碼;用這個軟件分別克隆一下(2)、(3)的源碼到本地。

(2)OGRE的依賴庫對應的源碼:https://bitbucket.org/cabalistic/ogredeps

(3)OGRE的源碼庫:https://bitbucket.org/sinbad/ogre 


(4)CMAKE(一般用最新版的版本)

此外還需要Direct9 /direct11等庫的支持。boost我在編譯的時候沒用到,好像比較新的OGRE版本的編譯都不需要boost了。

具體步驟。

1.用TortoiseHg下載ogredeps源碼、ogre源碼;

2.編譯OGRE依賴庫的源碼:

這個一般不會出啥問題,用CMAKE打開源碼根目錄裏對應的cmakelists.txt,然後改一下輸出的目錄,一般都是放到根目錄裏的一個文件夾下,方便找到生成的sln和其他文件。

設置好輸出目錄,就點擊配置,一般要點兩次配置,第一次會出現紅色項,第二次就沒了。如果配置沒問題的話cmake的輸出信息列表裏不會有警告或錯誤標誌啥的,如果有那最好看看,然後用VS2013打開這個工程,最好用管理員權限運行VS2013,編譯ALL_BUILD項目的debug和release版本之後,然後編譯INSTALL項目,其中如果此時VS不是管理員,那麼到時候會報錯,關於cmake的錯誤,網上有解決辦法的。install項目就是將頭文件,庫,動態鏈接庫放到三個文件夾下,而這三個文件夾在設置的輸出目錄裏的ogredeps文件夾裏。編譯完ALLBUILD之後編譯INSTALL的debug和release版本,一般不會出錯。

2.移動ogredeps目錄到ogre源碼文件夾下,

此時可以吧ogredeps放到ogre源碼根目錄下,至於改不改名其實看個人,這裏改文件夾名爲Dependencies。此時還要把Dependencies文件夾裏的bin文件夾複製到src文件夾下,這個ogre對應的cmake會需要的。

3.OGRE源碼版本的選擇:

TortoiseHg的update可以更改源碼的版本。

4.ogre源碼編譯

跟編譯依賴源碼很像,用cmake打開cmakelists文件,修改輸出路徑,進行配置,兩次配置,觀察輸出內容,沒有錯誤的話,生成sln,然後用(管理員權限)VS打開sln,首先進行ALLBULID進行編譯debug和release,再編譯INSTALL的release和debug。最後生成的sdk位置與在cmake設定的參數有關。我的是出現在了系統盤的programfiles目錄下。


關於源碼版本:

V1.9:網上大多都能搜出關於VS2013+ogre1.9的源碼編譯教程,但是我在編譯的時候還是出現了問題。1.9的版本在編譯的過程中出現一個關於const*指針未指定大小的問題,這個好像是samples裏的faceAnnimation引起的,此外好像如果選擇了Dx11的渲染庫,那麼電腦沒安裝dx11包,也會有錯誤。將這兩個項目從ALLBUILD裏去除之後編譯,還是有項目出問題了,產生了大約幾百個錯誤,看了一下編譯進度,出錯出在samples的編譯中,核心源碼其實已經編譯過了,因此v1.9源碼要在cmake選擇編譯的項目是,要慎重考慮是否需要和合適的。

V2.1:由於1.9的samples編譯不過,想看看samples的效果,又將源碼改爲2.1,考到到2.1更完善,應該bug會少點吧。編譯方式還是按照上面的方式進行編譯,但是在編譯的過程中又出錯了,還是與samples有關,V2.1的源碼包含了1.X的例子和2.0版本的例子,其中像ExampleApplication.h這個文件,它直接顯示找不到類型的聲明。主要原因就是V2.1版本的源碼加入了更細的命名空間,API變了,而V1.X的samples的例子沒有修改,此時就出錯了。另外還有大量的錯誤顯示與OverLay有關,畢竟代碼中的overlay在Components文件夾下,Ogre名目空間裏沒有overlay,此時引起了大量的錯誤。反正編譯的很不順利。就放棄了,還是用老版本進行編譯了。

V1.8這個版本基本上與1.7改動不大,配置好後,直接對ALLBULID和INSTALL分別進行debug和release編譯,沒有出現錯誤,包括所有的samples。倒是編譯的十分順利。

另外注意的就是,INSTALL編譯debug和release之後,如果沒有進行特別的cmake參數調整,一般在系統盤programFiles裏生成了OGRE文件夾,裏面有lib,include,bin三個文件夾,就是sdk基本所需的東西,不用手動粘貼頭文件。另外還需要考本samples和media等這個文件夾裏的東西,否則模型材質啥的都沒有。



總結:編譯整個源碼的過程真是費時費力,不過也算有所收穫。希望別人不要走我的老路。

另外上文中有的內容可能有誤,歡迎指正。











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章