非線形最適化ライブラリ「Ceres Solver」Windows x64環境でのビルド

GoogleのC++大規模非線形最適化ライブラリ「Ceres Solver」をWindows x64、Visual Studio 2013環境でビルドする方法を紹介します。

※2015/08/04 Visual Studio 2015でビルドできるように内容修正

用意するもの

手順

1. CMakeをインストール。

2. Google Flagsのビルド
CMakeを利用してデフォルトのままビルドできます。

3. Google Logのビルド
logging.ccファイルの約1462行目の__asm int 3をコメントアウトします。(2015/08/04の時点で(0.3.4)修正)

Visual Studio 2015でビルドするためにはここの手順通りにソースを修正する必要があります。

google-glog.slnを開いてビルドします。

4. SuiteSparse, Metisのビルド
SuitSparse-x.x.xファイルを解凍し、出てきたSuiteSparseフォルダをsuitesparse-metis-for-windowsフォルダに入れます。
metis-x.x.xファイルを解凍し、出てきたmetis-x.x.xフォルダをmetisに変更してsuitesparse-metis-for-windowsフォルダに入れます。
metis/CMakeLists.txtファイルを開いて、project(METIS)の次にcmake_policy(SET CMP0022 NEW)を追加します。
metis/GKlib/gk_arch.hファイルを開いて

に変更します。もし2013以前のVisual Studioを使う予定がないなら、削除してしまっても構いません。rint()とINFINITYが2013からデフォルトで入っているからです。

最後にCMakeLists.txtファイルの次の部分をコメントアウト(先頭に#をつける)します。これを行わない場合、手動でコンパイルされたファイルの名前を修正する羽目になります。(2015/08/04の時点で34-36行)

その他githubにあるビルド案内にしたがって各種設定を行い、CMakeを利用してsuitesparse-metis-for-windowsをビルドします。

5. Ceres Solverのビルド
Ceres SolverのフォルダをCMakeで開いてConfigureすると、エラーになるはずです。一個ずつ修正しながらConfigureを押してください

BLAS_blas_LIBRARYにはsuitesparse-metis-for-windowsのlibblas.libを設定してください。
LAPACK_lapack_LIBRARYにはsuitesparse-metis-for-windowsのliblapack.libを設定してください。

その他SuiteSparse関係の変数に該当するsuitesparse-metis-for-windowsのlibファイルを設定してください。

CMakeを設定が終わったらGenerateしてslnファイルからビルドします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).