2012年2月27日 星期一

好久沒來的~從Source建立Ogre 1.7.4使用MinGW~


我很喜歡OGRE這套3D引擎
別無其它,只因為網路上的資源之豐富,而且很好懂
尤其是官方wiki一直都有在更新,討論區也會有解答,不怕找不到答案
沒有答案的話,通常是自己耍笨造成的(基本C++問題)
先表列我自己使用的一些模組
Cmake 2.8.3
MinGW 4.5.2(2011.03.15)
DirectX February 2010
Boost 1.46.1
ogredeps(2012.02.20)下載


其實要使用的話看這篇Prerequisties就差不多了
不過實際上,還是有些小地方要注意
首先,MinGW的版本,教學裡是說要使用4.4.x
不過實際上使用4.5版是沒問題的
至於更晚一點的4.6就會發生0x000005的執行錯誤了
這些上一篇都有提到,重點是怎麼取得4.5或是4.4版?

因為如果使用官方所提供最新的Install套件的話,一定是最新的4.6
要初學者自己抓要的東建立的話,還蠻麻煩的
最簡單的方法就是,下載舊版的mingw-get-inst(連結在此)
理論上2011-09-15(4.6.1版)前的應該都行
也就是至少選擇20110802前的版本
然後在安裝時,請選擇Use pre-packaged repository catalogues如下圖

如最初所述,我是使用20110314版,如果大家怕會有其它問題的話,用這個就好
我會再找時間測試20110802版的套件
測試完畢,建議就用20110314版就行了
安裝位置請選C:\MinGW,這樣Boost與Ogre建立時比較有利

接著,DirectX建議還是安裝
因為我們要連Denpendecies套件一起重新建立
裡面的OIS需要DirectInput套件

再來,教學裡提到,Boost只是個選項,可以不用建立
可是使用Boost有讓Ogre使用多執行緒的好處
我們還是建立比較好,文章中提到使用1.44版
但實際上cmake裡可以偵測到1.46.1的版本
下載這一個也OK啦,但更高的版本不確定
解壓縮建議放到c:\boost_1_46_1
接著,如果已經在path裡加上Mingw的執行目錄
而且等於boost裡設定的C:\MinGW的話就OK
如果不是的話,也可以自行更改
c:\boost_1_46_1\tools\build\v2\engine\src\build.bat
C:\Mingw有關的目錄改掉,改成自行安裝的目錄
然後照著教學上所寫執行bjam,只是我們改一下給gcc(mingw)用

bjam --build-dir="c:\boost_1_46_1" toolset=gcc --build-type=complete --with-date_time --with-thread

只建立date_timethread模組
然後記得,把建立好的東西從c:\boost_1_46_1\stage\lib裡移出來
c:\boost_1_46_1\lib
這樣,把目前Boost資料夾設定好之後,cmake才找得到東西
然後也要在電腦裡的環境變數加入
BOOST_ROOT=c:\boost_1_46_1\
BOOST_INCLUDEDIR=c:\boost_1_46_1\
BOOST_LIBRARYDIR=c:\boost_1_46_1\lib

最後就是Dependencies的建立
教學中,有提到MinGW可以使用事先建立的,不過那已經是前年的版本
這邊我們自己建立最新版的,下載並解開ogredeps之後
使用cmake產生Makefile(Mingw)
這裡直到建立Ogre都不使用Code::Blocks with Mingw選項,這會有問題
比較麻煩的,大概是建立後的工作
Ogre裡的cmake對應的是20100216版本的目錄配置
所以要把產生出來的靜態函式庫與DLL還有標頭檔放入對應的目錄

然後,建立Ogre1.7.4使用Cmake產生Makefile
一樣產生可以給mingw32-make用的就行
這邊有兩個作法,一個是使用cmake的gui執行
執行configure後,再指定Dependencies的目錄位置
然後generate出Makefile,再使用mingw32-make去編譯
另一個,可以從原始碼SDK\Win32裡
mingw_BuildSamples.bat複製到原始碼的根目錄
更改cmake的指定目錄到安裝的位置
CMAKE=c:\cmake-2.8.3-win32-x86
然後在cmake.exe -G" MinGW Makefiles" . -DCMAKE_BUILD_TYPE="%BUILD%"
最後加入 -DOGRE_DEPENDENCIES_DIR="Dependencies目錄位置"
直接點選這個批次檔執行就可

原本BUILD的指定的是RelWithDebInfo
帶有Debug資訊會編譯很久,請有耐心
不然請把這行rem掉,改開放下面的BUILD=Release
會省略掉debug用的資訊,直接可以使用的套件

沒有留言: