2010年5月12日水曜日

Ubuntu10.04でLuxRenderをビルドしてみる

基本的には公式wikiにあるUbuntu9.04/9.10向けの解説を参考に進めてけばOK。


ただ問題なのがBoost関連の設定。
aptでインストールしようにも現時点で提供されているバージョンは1.40。
LuxRenderで要求されているのは1.41。

でうまくいったやり方はとりあえず2通り。
A:バージョンを無視する。
B:Boostのソースを入手して使う


まずはAのパターン

LuxRenderのCMakeLists.txtを開いてBoostの有無を確認している箇所を探す。
そこで
FIND_PACKAGE(Boost 1.41 REQUIRED COMPONENTS python)
となっているのを
FIND_PACKAGE(Boost 1.40 REQUIRED COMPONENTS python)
としてバージョンを書き換えてしまう。
同じような箇所が直後にもう一行あるのでそっちもバージョンを書き換える。

という感じで2ヶ所書き換えたら
$ cmake -G "Unix Makefiles"
$ make luxrender
で完了。

要求されているライブラリのバージョンを無視しているわけですが
とりあえずビルドできて今のところちゃんと動いている模様。
これはちょっと気持ち悪いなぁという方はBのパターンへ。


で、Bのパターン

Boostのソースをもらってくる。上記wikiの解説では1.42.0をもらってきているので
それをもらってくる。

ソースのアーカイブを展開
$ tar zxvf boost_1_42_0.tar.gz
$ cd boost_1_42_0
Boostのコンパイル
$ ./bootstrap.sh
$ ./bjam --layout=system stage
まではwikiの解説どおりでOK。

上で出来上がったBoost1.42をインストールするのが簡単なんだろうけど
システムはaptで管理させておきたいのと、なるべくUbuntu10.04標準の状態に
しておきたいのでBoost1.42はインストールせずにLuxRenderのビルドだけで
使用するようにしたかったわけで。

となるとちょっと面倒でwikiの解説に
If you did not install Boost 1.42 to your system, you will need to edit
lux/CMakeLists.txt to change the name of the Boost libs to those you just built.
とあるとおりCMakeLists.txtでのBoost関連の設定をいじらないといけない。

で、どこをどう修正したらいいかは説明されていないorz
とりあえずだめもとでCMakeLists.txtを修正せずにmakeすると、リンク時にBoost関連と
思われるエラーが大量にでる。

いろいろ試した結果、CMakeLists.txtの
IF(Boost_FOUND)
    MESSAGE(STATUS "Boost library directory: " ${Boost_LIBRARY_DIRS}
    MESSAGE(STATUS "Boost include directory: " ${Boost_INCLUDE_DIRS}
ELSE(Boost_FOUND)
の部分を
IF(Boost_FOUND)
    SET(Boost_LIBRARY_DIRS ../boost_1_42_0/stage/lib)
    SET(Boost_INCLUDE_DIRS ../boost_1_42_0/boost)
    MESSAGE(STATUS "Boost library directory: " ${Boost_LIBRARY_DIRS}
    MESSAGE(STATUS "Boost include directory: " ${Boost_INCLUDE_DIRS}
ELSE(Boost_FOUND)
という感じに変更して用意したBoost1.42のライブラリとインクルードファイルの
ディレクトリを指定してやればOK。

あとはwikiの解説を参考にすれば出来上がり。
さあ、これで最適化ビルドが作り放題だw

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手