最近有人叫我編譯這個渲染引擎,據說很難編譯,我編譯無數代碼,一般別人的代碼拿來編譯都很難受,因為作者的機器跟我的機器配置上都有些不痛,可能會丟了什么庫之首先上Luxrender的官網,一般的開源項目都有個什么文檔之類的東西,一般也會教怎么去編譯代碼。找找還真有,文檔寫得太他媽精辟了,就一點點,這也符合我的風格,少說明簡單。
類的一大堆問題,有時可能是編譯器的不同,有可能有出現什么符號沒定義之類的問題。所以編譯代碼都是很難受的事情。耗時還耗精力。
閑話不扯了之間正題。
Luxrender 官網:http://www.luxrender.net/en_GB/index
編譯的文檔:http://www.luxrender.net/wiki/index.php?title=Building_on_Windows
據說我的機器還是WindowsXP所以找Windows下的文檔。
然后按它說的方法去干。
1.下載TortoiseHG
2.安裝好后在某個盤里面新建個文件夾,這誰都會。我的文件夾名就叫Luxrender
3.然后選中那個文件夾<Luxrender>右擊。鼠標移動到TortoiseHG,會發現有個叫Clone…的東西,點擊
4.然后再source path(也就是源路徑)里面輸入http://src.luxrender.net/lux/
5.在destination(也就是目標路徑)里面輸入 BASE/lux (其實BASE可要可不要,只是lux文件跟windows和luxrays要在同一級)。
6.然后點擊Clone(克隆)就可以了
7.然后就是等待
8.等待
9.再等待
10.等它完成了,然后我們還是依照3的做法,選中文件夾<Luxrender>移動到TortoiseHG,然后Clone…
11.在source path (源路徑)里面輸入 http://src.luxrender.net/windows/
12.在destination (目標路徑)里面輸入BASE/windows (保證windows文件夾跟lux同級就可以了)
13.點擊Clone之后等吧
14.完成后再按照3的做法選中文件夾<Luxrender>右擊移動到TortoiseHG上然后Clone
15.在source path 里面輸入http://src.luxrender.net/luxrays/
16.在destination 里面輸入 BASE/luxrayse (保證luxrays跟lux同級就可以了)
17.然后點擊Clone就可以開始無限的等待
18.等都完成了之后,就打開你的Visual Studio 2008的Command prompt,VC2005的你盡快裝個2008吧,VC2005難受死你。~_~
19.然后CD到你的windows文件夾。懂cd的跳過去:一般打開 Command prompt上的默認路徑是你的Visual Studio的安裝路徑。比如我的是在D盤,但是我的Luxrender在G盤所以要換盤,在黑屏上輸入 G: 。如果你的Luxrender在E盤就輸入 E: 。如此類推。然后就是 cd G:\luxrender\BASE\windows\ 我的是這樣,如果你的luxrender文件夾是在E盤里面的SRC文件夾中就輸入 cd E:\SRC\luxrender\BASE\windows\。
20.接著你會看到你的windows文件夾中有個叫做 getdeps.bat 的文件。在黑屏上輸入 getdeps
21.接著又是選擇什么的反正getdeps就是把所有的luxrender需要的類庫之類的都下載下來,然后解壓到一個叫做deps的文件夾里面,deps文件夾是在Luxrender\BASE\文件夾中,也就是跟你的lux、windows、luxrays同一級。
22.Get完之后就是導入注冊表,雙擊windows文件夾里面的build-vars.reg,然后確定導入就行了。其實它就是把像LUX_WINDOWS_BUILD_ROOT這樣的環境變量設置一下。當然你也可以自己一個一個設置。
23.接下來的事情就是build你下下來的東西 (<deps\>下的東西build一下,比如boost)。在你的Command prompt 里面輸入build-deps-x86.bat。(慚愧我還是用32位的WindowsXP)。你不要嘗試使用cmd.exe去build,難受的是你。
24.在無盡的等待回來后,你覺得差不多了,但是厄運才剛剛開始……..
開始編譯
1.然后就是編譯,進入BASE/windows然后打開lux.sln
2.編譯肯定不會成功的,但是要一邊編譯一邊看有什么問題。
問題:
1.出現isatty()找不到
加入#include <io.h>
將isatty改成 _isatty()
2.環境變量沒設置,會有這個問題的,所以加上它提示的環境變量
3.Yacc返回錯誤,說系統找不到某個東西。要把 BASE/windows/Projects里面的那個project文件(.vcproj)用文本文件打開然后將"$(InputDir)/$(InputName)-hxx.cpp"的反斜杠(/)去掉。有幾個文件要改這個的。當你遇到了就改一下。就是這個問題。
4.moc.exe找不到,就是QT沒有編譯好。打開visual studio 2008 的Command prompt 打開,然后cd到QT的根目錄比如我的是G:\Luxrender\BASE\deps\x86\qt-everywhere-opensource-src-4.6.2輸入configure -debug-and-release -opensource -platform win32-msvc2008完成之后在輸入nmake
5.miss python31.lib
拷貝 python31.lib
From
G:\Luxrender\BASE\deps\x86\Python-3.1.2\PCbuild\
To
G:\Luxrender\BASE\deps\x86\Python-2.6.6\PCbuild\
6.miss libboost_python-vc90-mt-lib
create foulder <python2> in
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage
copy
libboost_python-vc90-mt-lib
libboost_python-vc90-mt-1_43.lib
libboost_python-vc90-mt-gd-1_43.lib
libboost_python-vc90-mt-gd.lib
from
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python3\lib\
to
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python2\lib\
應該來說你就可以全部編譯過去了。