最近有人叫我編譯這個(gè)渲染引擎,據(jù)說(shuō)很難編譯,我編譯無(wú)數(shù)代碼,一般別人的代碼拿來(lái)編譯都很難受,因?yàn)樽髡叩臋C(jī)器跟我的機(jī)器配置上都有些不痛,可能會(huì)丟了什么庫(kù)之首先上Luxrender的官網(wǎng),一般的開(kāi)源項(xiàng)目都有個(gè)什么文檔之類的東西,一般也會(huì)教怎么去編譯代碼。找找還真有,文檔寫得太他媽精辟了,就一點(diǎn)點(diǎn),這也符合我的風(fēng)格,少說(shuō)明簡(jiǎn)單。
類的一大堆問(wèn)題,有時(shí)可能是編譯器的不同,有可能有出現(xiàn)什么符號(hào)沒(méi)定義之類的問(wèn)題。所以編譯代碼都是很難受的事情。耗時(shí)還耗精力。
閑話不扯了之間正題。
Luxrender 官網(wǎng):http://www.luxrender.net/en_GB/index
編譯的文檔:http://www.luxrender.net/wiki/index.php?title=Building_on_Windows
據(jù)說(shuō)我的機(jī)器還是WindowsXP所以找Windows下的文檔。
然后按它說(shuō)的方法去干。
1.下載TortoiseHG
2.安裝好后在某個(gè)盤里面新建個(gè)文件夾,這誰(shuí)都會(huì)。我的文件夾名就叫Luxrender
3.然后選中那個(gè)文件夾<Luxrender>右擊。鼠標(biāo)移動(dòng)到TortoiseHG,會(huì)發(fā)現(xiàn)有個(gè)叫Clone…的東西,點(diǎn)擊
4.然后再source path(也就是源路徑)里面輸入http://src.luxrender.net/lux/
5.在destination(也就是目標(biāo)路徑)里面輸入 BASE/lux (其實(shí)BASE可要可不要,只是lux文件跟windows和luxrays要在同一級(jí))。
6.然后點(diǎn)擊Clone(克隆)就可以了
7.然后就是等待
8.等待
9.再等待
10.等它完成了,然后我們還是依照3的做法,選中文件夾<Luxrender>移動(dòng)到TortoiseHG,然后Clone…
11.在source path (源路徑)里面輸入 http://src.luxrender.net/windows/
12.在destination (目標(biāo)路徑)里面輸入BASE/windows (保證windows文件夾跟lux同級(jí)就可以了)
13.點(diǎn)擊Clone之后等吧
14.完成后再按照3的做法選中文件夾<Luxrender>右擊移動(dòng)到TortoiseHG上然后Clone
15.在source path 里面輸入http://src.luxrender.net/luxrays/
16.在destination 里面輸入 BASE/luxrayse (保證luxrays跟lux同級(jí)就可以了)
17.然后點(diǎn)擊Clone就可以開(kāi)始無(wú)限的等待
18.等都完成了之后,就打開(kāi)你的Visual Studio 2008的Command prompt,VC2005的你盡快裝個(gè)2008吧,VC2005難受死你。~_~
19.然后CD到你的windows文件夾。懂cd的跳過(guò)去:一般打開(kāi) Command prompt上的默認(rèn)路徑是你的Visual Studio的安裝路徑。比如我的是在D盤,但是我的Luxrender在G盤所以要換盤,在黑屏上輸入 G: 。如果你的Luxrender在E盤就輸入 E: 。如此類推。然后就是 cd G:\luxrender\BASE\windows\ 我的是這樣,如果你的luxrender文件夾是在E盤里面的SRC文件夾中就輸入 cd E:\SRC\luxrender\BASE\windows\。
20.接著你會(huì)看到你的windows文件夾中有個(gè)叫做 getdeps.bat 的文件。在黑屏上輸入 getdeps
21.接著又是選擇什么的反正getdeps就是把所有的luxrender需要的類庫(kù)之類的都下載下來(lái),然后解壓到一個(gè)叫做deps的文件夾里面,deps文件夾是在Luxrender\BASE\文件夾中,也就是跟你的lux、windows、luxrays同一級(jí)。
22.Get完之后就是導(dǎo)入注冊(cè)表,雙擊windows文件夾里面的build-vars.reg,然后確定導(dǎo)入就行了。其實(shí)它就是把像LUX_WINDOWS_BUILD_ROOT這樣的環(huán)境變量設(shè)置一下。當(dāng)然你也可以自己一個(gè)一個(gè)設(shè)置。
23.接下來(lái)的事情就是build你下下來(lái)的東西 (<deps\>下的東西build一下,比如boost)。在你的Command prompt 里面輸入build-deps-x86.bat。(慚愧我還是用32位的WindowsXP)。你不要嘗試使用cmd.exe去build,難受的是你。
24.在無(wú)盡的等待回來(lái)后,你覺(jué)得差不多了,但是厄運(yùn)才剛剛開(kāi)始……..
開(kāi)始編譯
1.然后就是編譯,進(jìn)入BASE/windows然后打開(kāi)lux.sln
2.編譯肯定不會(huì)成功的,但是要一邊編譯一邊看有什么問(wèn)題。
問(wèn)題:
1.出現(xiàn)isatty()找不到
加入#include <io.h>
將isatty改成 _isatty()
2.環(huán)境變量沒(méi)設(shè)置,會(huì)有這個(gè)問(wèn)題的,所以加上它提示的環(huán)境變量
3.Yacc返回錯(cuò)誤,說(shuō)系統(tǒng)找不到某個(gè)東西。要把 BASE/windows/Projects里面的那個(gè)project文件(.vcproj)用文本文件打開(kāi)然后將"$(InputDir)/$(InputName)-hxx.cpp"的反斜杠(/)去掉。有幾個(gè)文件要改這個(gè)的。當(dāng)你遇到了就改一下。就是這個(gè)問(wèn)題。
4.moc.exe找不到,就是QT沒(méi)有編譯好。打開(kāi)visual studio 2008 的Command prompt 打開(kāi),然后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\
應(yīng)該來(lái)說(shuō)你就可以全部編譯過(guò)去了。