Bulletの 2.79バージョンをVisualStudio2012用ビルドしようとして試行錯誤した結果を書きます。
結局のところ、本家のSVNツリーから取得することになりましたが…。
ダウンロードした bullet-2.79-rev2440.zipを d:\testBullet に展開して
D:\testBullet\bullet-2.79 となるようにする。
CMakeを起動して、
Where is the source code: D:\testBullet\bullet-2.79
Where to build the binaries: D:\testBullet\bullet-2.79-build
そして、Configure ボタンを押す。
このときVisualStudioのバージョンを聞かれるので、Visual Studio 11 を選択。
(Visual Studio 11は Visual Studio 2012のことを指す)
今ほしいのはbulletのライブラリなので、デモの類いをビルド対象から外します。
BUILD_CPU_DEMOS, BUILD_DEMOS, BUILD_MINICL_OPENCL_DEMOS らにチェックが入っていればオフにします。
続いて、BUILD_EXTRAS, USE_DX11, USE_GLUT, USE_GRAPHICAL_BENCHMARK のチェックもオフにします。
一方でVisualStudioのランタイムDLLを使用する場合には、 USE_MSVC_RUNTIME_LIBRARY_DLL にチェックを入れます(今回はチェックした)。
設定できたら Configure ボタンを押して、Generate ボタンを押します。
先ほど指定したフォルダ(D:\testBullet\bullet-2.79-build)にプロジェクトが出来ているのでこれを開いてビルドを実行します。
本来ならここで、ビルド成功して終わりなのですが、このバージョンと上記の組み合わせではビルドに失敗します。
2>d:\testbullet\bullet-2.79\src\linearmath\btAlignedObjectArray.h(304): error C2719: 'CompareFunc': __declspec(align('16')) の仮引数は配置されません。 2> D:\testBullet\bullet-2.79\src\LinearMath/btGrahamScan2dConvexHull.h(88) : コンパイルされたクラスの テンプレート のインスタンス化 'void btAlignedObjectArray::quickSortInternal (L,int,int)' の参照を確認してください 2> with 2> [ 2> T=GrahamVector2, 2> L=btAngleCompareFunc 2> ]
リポジトリからコードを取得する
パッチも提供されているようでしたが手元では簡単に適用して問題解決とならなかったため、rev2480を取得して対処しました。
このリビジョン2480は 2.79のビルドエラーに対応したパッチが適用されたものとなっているようです。
取得したソースツリーで、上記の手順を同じように行ってライブラリを生成します。