CMake とは

lib つくるとかよく分からん。
配布されてるんでないの ? という疑問があり調べた。

OpenCV に限った話ではないが、 Linux とか Unix 使う気配ないので
OpenCV のカテゴリにした。

 同じソースツリーからさまざまなコンパイラー向けに
ビルドを行えるようにするツール。

ビルド:
ソースコードコンパイルやライブラリのリンクなどを行い、
最終的な実行可能ファイルを作成すること。

 

CMake を使ったビルドの基本的な流れ

CMake設定ファイル( CMakeLists.txtファイル )の記述を基に、
   指定したコンパイラー向けのビルド用ファイルを生成。

2  ビルド用ファイルを用いてコンパイラでビルドする。

 

何故必要か

C や C++ でプログラムを書くときは何らかのビルドツールを使う
Unix / Linux なら Make が多い。( Makefile ビルド手順を書く )

WindowsVisual Studio を使う時は Visual Studio 上で
ビルドの設定を行い、その結果はプロジェクトファイル(.vcproj)に
保存される。

Unix / LinuxWindows 両方に対応しようとすると
例えばソースファイルを追加するたびに MakefileVisual Studio
プロジェクトファイルの両方を修正することになり、
色々と管理が面倒になってくる。

故に自動化できる CMake が重宝。

 

OpenCV における CMake は何をしてるか

有効にする OpenCV の機能を詳細にカスタマイズしている。

インストーラーを用いて導入すると環境構築が容易だが、
インストーラー版で無効化されている機能については利用できない
というデメリットがある。

よって、CMake が必要になってくる。

 

OpenCV 3.x で何が有効か無効かどこ見ればわかる ?

応えではないが、OpenCV 3.x は全て有効済。拡張モジュール opencv_contrib を使用時に必要となる。

OpenCV 2.x は、CMake 使用して必要なライブラリを有効にする。

OpenCV 3.x は、opencv_worldxxx.lib に 統合されている。
core、highgui などが含まれている。

( 英語で検索したら欲しい答えが見つかった。日本語ではだめだったわ
 常識すぎて記述する必要ないのか ? )

 

 

こちらから。
http://www.wagavulin.jp/entry/2011/11/27/222636
https://stackoverflow.com/questions/34867289/opencv-3-x-only-contains-one-lib-opencv-world-lib
https://www.buildinsider.net/small/opencv/008
https://www.buildinsider.net/small/opencv/003
http://wa3.i-3-i.info/word12775.html
http://e-words.jp/w/%E3%83%93%E3%83%AB%E3%83%89.html
https://docs.opencv.org/

 

以上。コンパイラとかまったく意識してないー。