2016-9-3[土] opencvのコンパイルopencvを使ってみたいけれど、公式配布のwin用バイナリは vs12,vs14 用 dll 版だけのようで個人的に好みでないのでソースをビルドしてみることに。
CMake を使う模様。てことで、慣れてない CMake 使用のメモ書き。
CMakeでソース環境外でビルドするには、まずビルド用フォルダ用意して そこをカレントにする必要があるらしい。 cd \opencv-3.1.0 md build cd build そして CMake -G "Visual Studio 12 2013 Win64" -DBUILD_SHARED_LIBS=0 ..\ とすれば vs12 x64用 staticライブラリ(/Mt)版の sln 環境が生成され、生成された OpenCV.sln でビルドすれば .lib 群の出来上がり、と。
引数の ..\ は、ソース環境の基準となるディレクトリ位置の指定。ソース外ビルドするときは必須。 オプション -G は生成するビルドシステム(コンパイラ) の指定。どういう指定があるかは CMake --helpで確認。vs9 x86用なら "Visual Studio 9 2008" な具合。(CMake の運用では x86用と x64用とで sln(vc(x)proj) を別々に生成するのが普通ってことのよう) オプション -D でopencv固有の BUILD_SHARED_LIBS を off にすることで dll(shared)ライブラリを止める指定になる。(つまりデフォルトはshared) opencvビルドオプションはイッパイあり、opencv-3.1.0/直下の CMakeLists.txt の中を覗けば 説明付きでずらっと並んでるのでそれらを確認。
CMake -G "Visual Studio 12 2013 Win64" -DBUILD_SHARED_LIBS=0 -DBUILD_WITH_STATIC_CRT=0 ..\ ※ .lib .exeごとに vcxproj があって数が多いので、とても手作業で コンパイルオプションを設定し直す気になれないで、CMakeで生成し直しとなる。
-DWITH_CUDA=0 -DWITH_CUFFT=0 -DBUILD_CUDA_STUBS=0
を加えたりもした。 -DWITH_OPENCL=0 -DWITH_OPENCL_SVM=0 -DWITH_OPENCLAMDFFT=0 -DWITH_OPENCLAMDBLAS=0 を付ければよい、のだけど、こちらについては付けなくても問題なさそうだった。 その他 sample\をビルドしたければ -DBUILD_EXAMPLES=1 付けたり、逆にテスト関係不要ならば -DBUILD_TESTS=0 -DBUILD_PERF_TESTS=0 を付けたり、このへんはお好みで。
vc9(vc8) については、コンパイルできる.libも多いけれど、ソースで stdint.h が使われているライブラリもあってそれらがアウトだったり、OpenCL関係やvideoio関係がアウトなので、公式には未対応コンパイラの模様。
|