トップ «前の日記(2010/11/10(Wed)) 最新 次の日記(2010/12/01(Wed))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


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等で読むことも可能。