I am Charmie

メモとログ

levmar with Visual Studio 2010

levmarのコンパイルには2つのステップが必要: LAPACKのインストールとlevmarのコンパイル
LAPACKではなくCLAPACKを使ってlevmarを使ってみる(LAPACKを自前でセットアップするにはfortranコンパイラやら何やらが必要みたいだけど,調べてて頭が痛くなってきたので).

1. CLAPACK installation
CLAPACKのインストール方法は色々あるようだけど,ここではCMakeを使った方法を選択.
以下のサイトから自分のシステム構成に合ったファイルをダウンロード.
URL: http://www.netlib.org/clapack/
最新版(か,所望のバージョン) clapack-3.2.1-CMAKE.tgz をダウンロードして解凍.以降,トップディレクトリを DIR_CLAPACK_SRC = C:\...\clapack-3.2.1-CMAKE とする.

CMakeを起動して
Where is the source code: DIR_CLAPACK_SRC
Where to build the binaries: DIR_CLAPACK_DST (ex. C:/CLAPACK)
とし,"Configure"ボタンを押す(中央のウィンドウの赤い部分が消えるまで).次に,"Generate"ボタンを押すとDIR_CLAPACK_DSTディレクトリ内に色々とビルドに必要なファイルが生成される.

DIR_CLAPACK_DSTディレクトリ内の CLAPACK.slnVisual Studio 2010でビルド(Build->Batch Buildすると楽).ビルドに成功すれば以下のファイル(を含むいろんなファイル)が各ディレクトリに出来る.
lapack.lib: DIR_CLAPACK_DST/SRC/Release
tmglib.lib: DIR_CLAPACK_DST/Testing/MATGEN/Release
libf2c: DIR_CLAPACK_DST/F2CLIBS/libf2c/Release
blas.lib: DIR_CLAPACK_DST/BLAS/SRC/Release
上記のlibファイルに加えて,levmarを使用するには以下のヘッダファイルも必要(ひょっとしたらいらないかも).
*.h: DIR_CLAPACK_SRC/SRC

2. levmar compilation
CLAPACKのインストールが終われば準備OK.次はlevmarのビルド.以下のサイトからファイルをダウンロードして解凍.
http://www.ics.forth.gr/~lourakis/levmar/
CLAPACKと同様に,CMakeを使ってslnファイルを作成する.
Where is the source code: DIR_LEVMAR_SRC
Where to build the binaries: DIR_LEVMAR_DST
CLAPACKの設定次第だけど,libファイルの場所に関して手動で編集する必要があるかもしれない.僕は以下のような感じで編集してから”Configure"を押したら,無事成功した.
BLAS_LIB: DIR_CLAPACK_DST/BLAS/SRC/Release/blas.lib
F2D_LIB: DIR_CLAPACK_DST/F2CLIBS/libf2c/Release/libf2c.lib
LAPACK_LIB: DIR_CLAPACK_DST/SRC/Release/lapack.lib
LAPACKBLAS_DIR: DIR_CLAPACK_DST/BLAS/SRC/Release
"Generate"ボタンを押すと,DIR_LEVMAR_DSTディレクトリ内にLEVMAR.sln が出来上がるのでVisual Studio 2010でビルドする.libファイルとhファイルは以下のディレクトリにある.
levmar.lib: DIR_LEVMAR_DST/Release
levmar.h: DIR_LEVMAR_SRC

3. Test
For simple test can be done with a code as FAQ suggests.
http://www.ics.forth.gr/~lourakis/levmar/faq.html#Q23
http://www.ics.forth.gr/~lourakis/levmar/faq.html#Q24
Note that the order of include header files is important. I didn't check the detail but some website say that clapack.h should be called later.