今日の一言
2010/11/20(Sat) さて、寝るか! [長年日記] 6:00現在曇 12℃
_ [FC][OpenCV][OpenGL][OpenAL][Ubuntu][Linux][Debian][雑記] 超・基本的なCmakeの使い方_with_OpenCV
研究室の後輩が、Cmakeを使ったOpenCVの自作プログラムのコンパイルで詰まっていたので、自分なりにまとめた情報をここに書いておく。
・・・さて、いつ頃気づくかな?
まあ、気づかれなくでも自分はまったく問題ないがな!
参考:
・http://www.cmake.org/Wiki/CMake:How_To_Find_Installed_Software
・http://www39.atwiki.jp/hwiki/pages/24.html
・http://www-flc.desy.de/ldcoptimization/documents/talks/CMake_Tutorial.pdf
最低限必要となるのは、「CMakeLists.txt」というファイルのみ!
実際に書いてみるのが一番分かりやすいので、以下に非常にシンプルな例を挙げる。
#要求するcmakeのバージョン cmake_minimum_required(VERSION 2.6) #プロジェクト名 PROJECT(TestCmake_with_OpenCV) #ヘッダファイルの場所を指定 include_directories(/usr/include/opencv) #ライブラリの場所を指定 link_directories(/usr/lib) #実行ファイル生成方法 ADD_EXECUTABLE(squares squares.c) #ライブラリのリンク target_link_libraries(squares cxcore cv highgui cvaux ml)
これは、OpenCVの「squares.c」というファイルをコンパイルする場合の例である。
これだけ分かれば、「-I」「-L」オプションやライブラリのリンク等を含めた、最低限のコンパイルは出来るはず。
使い方としては、これをソースと同じ場所に置き、
$ cmake .
とすれば良い。これで、「Makefile」が出来上がる。(実行ファイルが出来るわけではない)
そして、
$ make
とすれば、生成された「Makefile」を使ってコンパイルをしてくれる。
より詳細な使い方は自力でググってください。
「make Install」時の場所の指定やマクロの使用、if文など、いろいろと出来るらしいですが、自分はそこまで頑張って使う気はないです。
*ついでなので、いくつか使えそうな関数をメモっておく。
・文字列を出力
MESSAGE("文字列")
・パッケージを検索していろんな設定を読み込んでくれる・・・らしい(自分には使えなかった)
FIND_PACKAGE(パッケージ名)
_ [FC][OpenCV][OpenGL][OpenAL][Ubuntu][Linux][Debian][雑記] pkg-config(/usr/lib/pkgconfig)にかかれている情報を調べる
情報は、「**.pc」にというファイル(**はソフト名)に保存されている。
例えば、OpenCVの場合は、「opencv.pc」というファイルがある。
ここで、端末上で、
$ pkg-config --cflags --libs opencv
と打つことで、「opencv.pc」にかかれている、「--cflags」と「--libs」の情報が出力される。
また、「.pc」ファイルは単なるテキストファイルであるため、どんなフラグがあるか等が分からない場合などは、普通に、
/usr/lib/pkgconfig/
に置かれている「**.pc」ファイルを、lessやcat等で読むことも可能。