酔っ払った夜中のツイートの流れでウッカリ全世界が熱望してきた“第1回 Blenderソースコードリーディング”というのをやることになったので、まずは準備として Blender のビルド環境を用意したメモを残します。
参加者の皆さんは当日コードのチェックアウトをしているとそれだけで一日おわってしまうので、この記事を参考にひとまずビルドして Blender が実行できるようになるまでは環境を整えておくと当日ダッシュで濃~い話ができるんじゃないかなと思います。
今回はまず入り口からということで比較的内部のドキュメントがまとまっている 2.6 のコードを参考にするために環境を構築してみました。Windows7/VS2008 で用意しています。
コードの取得
clone
https://developer.blender.org/diffusion/B/
存在するドキュメントは 2.6 の時のものなので、この頃のコードを用いて環境を構築する。リポジトリを見ると 2.6 の次に Bug fix 版として 2.6a があったので、そちらを使用することにする。
git clone git://git.blender.org/blender.git cd blender git submodule update --init --recursive git submodule foreach git checkout master git submodule foreach git pull --rebase origin master
リリース時につけられる tag もここで確認できるので、必要なバージョンのコードを抽出する際は参考にする。
コードのチェックアウトはものすごく時間がかかるので注意。
git.exe clone --progress -v "git://git.blender.org/blender.git" "D:\chiyama\Documents\Projects\OpenSource\blender\blender" Cloning into 'D:\chiyama\Documents\Projects\OpenSource\blender\blender'... remote: Counting objects: 797630, done. Receiving objects: 100% (797630/797630), 249.43 MiB | 78.00 KiB/s, done. Resolving deltas: 100% (698733/698733), done. remote: Compressing objects: 100% (98387/98387), done. remote: Total 797630 (delta 698733), reused 794130 (delta 695726) Checking connectivity... done. Checking out files: 100% (7749/7749), done. Success (10762719 ms @ 2014/10/13 16:25:46)
約三時間(!!)
Blender 2.6a のコードを取得
clone 後、v2.6a タグのついた部分をチェックアウト。
https://developer.blender.org/diffusion/B/browse/master/;v2.60a
※今回は clone してから checkout してしまったので二度手間になってしまった。 git clone -b (branch name) というのがあるようなのでそちらを使った方が楽かも。
外部ライブラリを取得する
http://wiki.blender.org/index.php/Dev:Doc/Building_Blender/Windows/msvc/CMake
VS2008 を使ってビルドするので以下を実行
svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64 ../lib/win64
チェックアウト先は (リポジトリ)/../lib/win64 と、リポジトリと並列な場所にする必要がある
最新のものでは Python のバージョンが異なるので、これも当時のものを使用する必要がある。リポジトリを見ると Rev.60366 が該当するリビジョンらしい(ので、チェックアウト時にリビジョンを指定する方がよい)。
ビルド
ソースコードから Blender をビルドする
http://wiki.blender.org/index.php/Dev:JA/Doc/Building_Blender
ビルドシステムは SCons と CMake が選べる。私は CMake を選択。
あと、Building Blender on Windowsを見ると SCons から CMake に 移行してるっぽい?
プロジェクト生成
CMake GUI で VS2008 用プロジェクトを生成。バイナリ出力先は (リポジトリ)/../build に設定。インストール先も指定できるが、2.6a のタグ付きのところから持ってきたせいか、これは使用されないっぽい。
WITH_INTERNATIONAL がオンになっているとLibIntl for Windowsが必要っぽい。本質とは関係ないしメンドイので今回はオフ。
最後のリンクでも OpenEXR 関係のライブラリが無いと言われてコケるので、プロジェクトの設定を修正。CMakeLists.txt のここ?
if(WITH_IMAGE_OPENEXR) if(MSVC90) set(MSVC_LIB _vs2008) set(MSVC_INC) elseif(MSVC10) set(MSVC_LIB _vs2010) set(MSVC_INC _vs2010) else() set(MSVC_LIB msvc) set(MSVC_INC) endif() set(OPENEXR ${LIBDIR}/openexr)
ここのバージョン判別部分をゴッソリ削って
if(WITH_IMAGE_OPENEXR) set(OPENEXR ${LIBDIR}/openexr)
こうする。
コード修正
OpenEXR のパス周りで幾つかエラーが出るので修正する。
3>..\..\..\..\..\..\blender\source\blender\imbuf\intern\openexr\openexr_api.cpp(66) : fatal error C1083: include ファイルを開けません。'half.h': No such file or directory
>..\..\..\..\..\..\blender\source\blender\imbuf\intern\openexr\openexr_api.cpp(67) : fatal error C1083: include ファイルを開けません。'IlmImf/ImfVersion.h': No such file or directory
何故か IlmImf ディレクトリが指定されているので、 OpenEXR にかきかえる
インストール
INSTALL プロジェクトがあるので、これをビルドするとインストールされる。
インストール後、 blender.exe を実行して Blender が起動すれば成功。