MHRNOTE

画像処理、コンピュータービジョン、GPGPU、開発環境、etc

OpenMPとOpenCVを使って書いたC++のコードをCMakeでビルドするときのメモ.

お久しぶりです.(すごくお久しぶりです)

OpenMPOpenCVを使って書いたC++のコードをCMakeでビルドするときのメモ.

の前に.

CMake

CMakeはコンパイラに依存しないビルド自動化のためのフリーソフトウェア*1

いろんなライブラリを使ったソースをコンパイルするときにMakefileを頑張って書くのは面倒なので,ありがたく使っています.

使い方としては,CMakeLists.txtに 「◯◯というライブラリを使いたいからどうにかして!」みたいなノリで書いて,cmake <path/to/CMakeLists.txt>を実行すると,うまいこと(大量の中間ファイルを 吐き出しながら)Makefileを生成してくれます. なお,最初に参考にしたのはこちら *2 *3

OpenMP

OpenMPは、並列コンピューティング環境を利用するために用いられる標準化された基盤。OpenMPは主に共有メモリ型並列計算機で用いられる。*4

とても小さな労力で並列化が可能ということで,最近使い始めました.

CMakeLists.txt

で,こちらがOpenMPOpenCVに対応したCMakeLists.txtです.

cmake_minimum_required(VERSION 2.8)
project( sample )
find_package( OpenMP )
if (OPENMP_FOUND) 
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
find_package( OpenCV REQUIRED )
add_executable( sample  sample.cpp )
target_link_libraries( sample ${OpenCV_LIBS} )

このあとにmakeでビルドしてあげると,簡単に実行ファイルを生成することができます.

*1:出典:Wikipedia「CMake」

*2:http://yosilove.blog.shinobi.jp/プログラム/cmakeの使い方メモ

*3:http://qiita.com/termoshtt/items/539541c180dfc40a1189

*4:出典:WikipediaOpenMP