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.lib
LAPACK
にチェックを入れる
- SuiteSparse周りのCMakeオプションを設定します。下記を設定してConfigureを実行します。
AMD_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
AMD_LIBRARY
:SuiteSparse_INSTALL/lib/libamd.lib
CAMD_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
CAMD_LIBRARY
:SuiteSparse_INSTALL/lib/libcamd.lib
CCOLAMD_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
CCOLAMD_LIBRARY
:SuiteSparse_INSTALL/lib/libccolamd.lib
CHOLMOD_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
CHOLMOD_LIBRARY
:SuiteSparse_INSTALL/lib/libcholmod.lib
COLAMD_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
COLAMD_LIBRARY
:SuiteSparse_INSTALL/lib/libcolamd.lib
SUITESPARSEQR_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
SUITESPARSEQR_LIBRARY
:SuiteSparse_INSTALL/lib/libspqr.lib
SUITESPARSE_CONFIG_INCLUDE_DIR
:SuiteSparse_INSTALL/include/suitesparse
SUITESPARSE_CONFIG_LIBRARY
:SuiteSparse_INSTALL/lib/suitesparseconfig.lib
METIS_LIBRARY
:SuiteSparse_INSTALL/lib/metis.lib
SUITESPARSE
にチェックを入れる
- 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/include
TBB_tbb_LIBRARY_DEBUG
:TBB_DIR/lib/intel64/vc14_uwp/tbb_debug.lib
TBB_tbb_LIBRARY_RELEASE
:TBB_DIR/lib/intel64/vc14_uwp/tbb.lib
TBB_tbb_preview_LIBRARY_DEBUG
:TBB_DIR/lib/intel64/vc14_uwp/tbb_preview_debug.lib
TBB_tbb_preview_LIBRARY_RELEASE
:TBB_DIR/lib/intel64/vc14_uwp/tbb_preview.lib
TBB_tbbmalloc_LIBRARY_DEBUG
:TBB_DIR/lib/intel64/vc14_uwp/tbbmalloc_debug.lib
TBB_tbbmalloc_LIBRARY_RELEASE
:TBB_DIR/lib/intel64/vc14_uwp/tbbmalloc.lib
- CMakeのGenerateを実行。これでようやくVisual Studio 2017のプロジェクトファイルが出来上がります。
- 最後にVisual Studio 2017でビルドしてやればCeres Solverのビルド完了です!!
コメント