staticライブラリの自前ビルド
まずMinGW用のMakefileをつくる。
- cmakeを本家(http://www.cmake.org/)からダウンロードする。(windows用のバイナリインストーラでさくっとインストールするのが楽)
- OpenCV2.4のソースファイルを本家(http://opencv.org/)からダウンロードしてきてCドライブ直下に展開する。
- cmake-guiを起動する。
- BrouseSourceボタンで展開したOpenCV2.4のディレクトリ(デフォルトだとc\:opencv)をセットする。
- BrouseBuildボタンでビルド先のディレクトリ(ここではc\:OpenCV2.4MinGWとする)をセットする。
- 今回はstaticライブラリをビルドしたいのでBUILD_SHARED_LIBSのチェックを外す。(Searchでsharedと入力するとすぐ出てくる)
- Configureボタンを押す。
- "MSYS Makefiles"を選択して"Specify native compilers"にチェックをつける。
- Nextボタンを押して、CにはMinGW/bin/gcc.exeをセットし、C++にはMinGW/bin/g++.exeをセットする。(Fortranは何もセットしなくてOK)
- Finishボタンを押す。
- 再度Configureボタンを押す。
- Generateボタンを押す。
これでc\:OpenCV2.4MinGWにMinGW用のMakefileがつくられる。
次にMinGWでMakeしてライブラリをビルドする。
- MinGWのShellを起動する。
- 起動したShellで以下のコマンドを入力する。
cd c\:OpenCV2.4MinGW && mingw32-make && mingw32-make install
これでビルドが開始される。ビルドにはしばらく時間がかかるので終わるまで待つ。(makeするときに-j2とか-j4とかしてもよいかもしれない)
アプリケーションへのリンク
mingw32-g++でコンパイルするときは、C:/OpenCV2.4MinGW/libとC:\OpenCV2.4MinGW\3rdparty\libが参照できるようにし、必要なライブラリをリンクする。
リンクするライブラリの順番によってはundefinedエラーが起こるので、そこらへんは試行錯誤するか、調べるかして解決する。ちなみに以下のコンパイルオプションだとうまくコンパイルできた。
-LC:/OpenCV2.4MinGW/lib -lopencv_imgproc246 -lopencv_core246 -lopencv_highgui246 -LC:/OpenCV2.4MinGW/3rdparty/lib -llibjpeg -llibtiff -llibpng -llibjasper -lIlmImfアプリケーションの利用するOpenCVのライブラリによっては他のライブラリ(libopencv_video246.aなど)が必要になることがあるので、その場合は適宜調べて追加すること。インクルードパスにOpenCV2.4MinGW中のinstallディレクトリを追加しておくこと。