Ceres SolverはGoogle謹製の非線形最小二乗問題のソルバーライブラリです。
とても便利に使わせてもらってるのですが、毎回ビルドに躓くので、ビルド手順をメモっておきます。今回はCXSparseもSuiteSparseもすべて使った、盛り盛りの状態でビルドしてみようと思います。
開発環境
私の開発環境はこんな感じです。
Windows 10
CMake 3.10.0
Visual Studio 2017
依存ライブラリの入手 & ビルド
Ceres Solverは色々と依存ライブラリがあるので、まずは各種依存ライブラリを入手&ビルドします。
- Eigen
公式サイトから最新安定版(現時点Eigen 3.3.5)をダウンロードします。Eigenはテンプレートライブラリなので、ビルドは不要です。 - gflags
GitHubのリポジトリから最新安定版(現時点gflags 2.2.1)をダウンロードして展開 & CMakeでVisual Studio用のプロジェクトファイルを作ってビルドします。特に問題なくビルドできると思います。
CMAKE_INSTALL_PREFIXは適時適当な場所に設定してください。 - glog
GitHubのリポジトリから最新安定版(現時点glog 0.3.5)をダウンロードして展開 & CMakeとVSでビルドします。CMAKE_INSTALL_PREFIXは適時適当な場所に設定してください。
CMakeのビルドオプションにgflags_DIRがあるので、せっかくなのでgflagsのビルドディレクトリを指定しましょう。 - SuiteSparse
公式のSuiteSparseはWindowsをサポートしていません。公式サイトにはWindows使ってる人はsuitesparse-metis-for-windows使ってみてねと書いてあったので、これの最新安定版(現時 v1.4.0)をダウンロードします。CMakeは初期状態のままで問題なくビルドできると思います。SUITESPARSE_INSTALL_PREFIXは適時適当な場所に設定してください。 - intel TBB
公式サイトから最新安定版(現時点Threading Building Blocks 2019)をダウンロードします。ビルド済みのバイナリが配られているので、今回はそれを使います。
Ceres Solverのビルド
最新安定版のCeres Solver(現時点1.14.0)を下記サイトの「latest stable release」といういうリンクから入手します。git cloneで入手してもよいですが、手に入るのは最新の開発版で安定していない可能性があるので、特にこだわりがなければ最新安定板の方を入手しましょう。
- まずはそのままCMakeのConfigureを実行してみます。CMakeのAdvancedにチェックを入れておいてください。
EIGEN_INCLUDE_DIRが設定されてないよ!と怒られるので、EIGEN_INCLUDE_DIRにEIGEN_ROOTを設定してもう一回実行します。EIGEN_ROOTはEigenのルートディレクトリです。 - 一応CMakeの実行でエラーが出なくなると思います。もし
glog_DIRがないと怒られたらglogのビルドディレクトリを、gflags_DIRがないと怒られたらgflagsのビルドディレクトリを指定してCMakeを実行してください。 - blasの設定をします。便宜上CMakeの
SUITESPARSE_INSTALL_PREFIXで設定したディレクトリをSuiteSparse_INSTALLと表しています。下記を設定してConfigureを実行します。BLAS_blas_LIBRARY:SuiteSparse_INSTALL/lib64/lapack_blas_windows/libblas.lib
- lapackを設定します。下記を設定してConfigureを実行します。
LAPACK_lapack_LIBRARY:SuiteSparse_INSTALL/lib64/lapack_blas_windows/liblapack.libLAPACKにチェックを入れる
- SuiteSparse周りのCMakeオプションを設定します。下記を設定してConfigureを実行します。
AMD_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseAMD_LIBRARY:SuiteSparse_INSTALL/lib/libamd.libCAMD_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseCAMD_LIBRARY:SuiteSparse_INSTALL/lib/libcamd.libCCOLAMD_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseCCOLAMD_LIBRARY:SuiteSparse_INSTALL/lib/libccolamd.libCHOLMOD_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseCHOLMOD_LIBRARY:SuiteSparse_INSTALL/lib/libcholmod.libCOLAMD_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseCOLAMD_LIBRARY:SuiteSparse_INSTALL/lib/libcolamd.libSUITESPARSEQR_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseSUITESPARSEQR_LIBRARY:SuiteSparse_INSTALL/lib/libspqr.libSUITESPARSE_CONFIG_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseSUITESPARSE_CONFIG_LIBRARY:SuiteSparse_INSTALL/lib/suitesparseconfig.libMETIS_LIBRARY:SuiteSparse_INSTALL/lib/metis.libSUITESPARSEにチェックを入れる
- CXSparse周りのCMakeオプションを設定します。
CXSparse_INCLUDE_DIR:SuiteSparse_INSTALL/include/suitesparseを設定してConfigureCXSparseにチェックを入れるCXSPARSE_INCLUDE_DIR:SuiteSparse_INSTALL/lib/libcxsparse.libを設定してConfigure
- intel TBB周りのCMakeオプションを設定します。便宜上TBBのダウンロードディレクトリを
TBB_DIRと表記します。下記を設定してConfigureを実行します。TBB_INCLUDE_DIRS:TBB_DIR/includeTBB_tbb_LIBRARY_DEBUG:TBB_DIR/lib/intel64/vc14_uwp/tbb_debug.libTBB_tbb_LIBRARY_RELEASE:TBB_DIR/lib/intel64/vc14_uwp/tbb.libTBB_tbb_preview_LIBRARY_DEBUG:TBB_DIR/lib/intel64/vc14_uwp/tbb_preview_debug.libTBB_tbb_preview_LIBRARY_RELEASE:TBB_DIR/lib/intel64/vc14_uwp/tbb_preview.libTBB_tbbmalloc_LIBRARY_DEBUG:TBB_DIR/lib/intel64/vc14_uwp/tbbmalloc_debug.libTBB_tbbmalloc_LIBRARY_RELEASE:TBB_DIR/lib/intel64/vc14_uwp/tbbmalloc.lib
- CMakeのGenerateを実行。これでようやくVisual Studio 2017のプロジェクトファイルが出来上がります。
- 最後にVisual Studio 2017でビルドしてやればCeres Solverのビルド完了です!!


コメント