最近有人叫我编译这个渲染引擎,据说很难编译,我编译无数代码,一般别人的代码拿来编译都很难受,因为作者的机器跟我的机器配置上都有些不痛,可能会丢了什么库之首先上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\
应该来说你就可以全部编译过去了。