ROSをいれた環境などでは,OpenCVに関する機能は,CMakeを用いてビルドすることになる.
OpenCVに関するサイトなどを見るとpkg-configを用いているものが多いが,OpenCVを用いるだけのCMakeListsの書き方について触れているサイトが少ない.
そこで,ここでは,aptなどでインストールしたOpenCVを用いたプログラムをビルドするためのCMakeLists.txtの書き方を示す.
なお,こちらは,Ubuntu16.04環境で確認を行っている.
前提条件
コンパイルしたいソースファイルと,CMakeLists.txtは同じ下位層にある事を前提とする.なお,中身の理解ができたら,適宜ディレクトリ構成を変えたようなファイルを作成してもらって良い.
CMakeLists.txtの中身
以下に,OpenCVをビルドするためのCMakeLists.txtのサンプルを示す.
詳細は適宜コメントを参考にしてほしい.
cmake_minimum_required(VERSION 2.8.3) ##CMake 2.8.3以上を条件として設定
project(PROJECT_NAME) ##プロジェクト名をいれる
set(SOURCE_FILE source.cpp) ##ファイル名を適宜書き換えること.
find_package(OpenCV REQUIRED) ##OpenCVのビルド環境の設定ファイルを読み込む
##OpenCV関係のインクルードディレクトリのパスを設定
include_directories( ${OpenCV_INCLUDE_DIRS} )
##実行ファイル名を設定.
add_executable( ${PROJECT_NAME} ${SOURCE_FILE} )
##リンクするライブラリを読み込む
target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBRARIES} )
CMakeLists.txtを使ったソースファイルのビルド
同一ディレクトリに,CMakeLists.txt,source.cppがあるモノとする.
CMakeでは,ディレクトリを汚さないように,buildディレクトリ内にビルドした情報や実行ファイルを出力させるポリシー?があるので,それにならう.
ここでは,上記のファイルが保存されたディレクトまで移動していると過程する.
mkdir build
cd build
cmake ..
cmakeが正常に終了した場合,以下の様にしてmakeする.
make
これで,設定した実行ファイルがbuildディレクトリ内に生成される.
おわりに
CMakeを用いると,Windows,Linux,Macなど環境に依存しないビルドが可能となる.ぜひ,これを機に,CMakeの利用にチャレンジして欲しい.