CMakeを使ってOpenCVを楽にセットアップする方法 (for Visual Studio 2010)
Visual StudioでOpenCVのプロジェクトを作るときに、いちいちインクルードディレクトリやライブラリを指定するのが面倒です。
CMakeを使って一度下準備をすれば、これらの設定を飛ばして楽にOpenCVプロジェクトを作成することが出来ます。
ここでは画像を表示するサンプルファイルを使って、CMakeで設定済みVisual Studioソリューションを生成する手順を紹介します。
手順
1. CMakeを使ってOpenCVをビルドする
まず、CMake公式サイトからCMakeをダウンロードし、インストールします。
次に、OpenCV公式サイトからOpenCVをダウンロードしてきて、CMakeを使いビルドします。
ビルドの手順は、下記のサイトに従って下さい。
Windows に OpenCV バージョン 2.4.5 をインストール
2. dllのディレクトリにパスを通す
環境変数PATHに下記のdllディレクトリを追加します。(ビルドした環境やバージョンによって微妙に違うかもしれないので、自分で確認して下さい。)
- C:\opencv\opencv\build\x64\vc10\bin (Visual Studio 2010 64bitの場合)
コントロールパネルのシステムから環境変数を開いてもいいのですが、個人的には Rapid Environment Editor をお勧めします。これを使うと、環境変数の編集が楽に出来ます。
3. CMakeLists.txtを書く
好きな場所にソースコードを置くディレクトリを作ります(例えばC:\myapp\SampleCMakeOpenCV
など)。
ここに、テキストエディタで下記のファイルを作成し、CMakeLists.txt
と名付けます(ファイル名の綴りを要確認)。
# 下記の2つは自分の環境に合わせて書き換える
SET(OpenCV_DIR "C:/opencv/opencv/build") # OpenCVConfig.cmake があるディレクトリ
INCLUDE_DIRECTORIES("C:/opencv/opencv/build/include") # 上記ディレクトリの下のincludeディレクトリ
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT( SampleCMakeOpenCV )
FIND_PACKAGE( OpenCV REQUIRED )
ADD_EXECUTABLE( MyProject main.cpp )
TARGET_LINK_LIBRARIES( MyProject ${OpenCV_LIBS})
次に、 ここ からmain.cpp
をダウンロードして同じディレクトリに配置します。(自分でソースを書く場合にも、適当なC++ファイルを用意する必要があります。)
上記のmain.cpp
は適当なサンプル画像を必要とするので、ここからダウンロードして配置します。
4. CMakeを実行する
WindowsメニューのすべてのプログラムからCMakeを探し、「CMake (cmake-gui)」を実行します。
「Where is the source code」「Where to build the binaries」に同じもの(この例だとC:\myapp\SampleCMakeOpenCV
)を入れます。バイナリの場所はお好みで指定しても構いません。
次に「Configure」を押します。Visual Studioの種類を聞かれたら、今回はVisual Studio 2010の64bit版なので「Visual Studio 10 64bit」を指定します。
エラーが出なければ「Generate」を押します。これで、同じディレクトリにソリューションファイル(SampleCMakeOpenCV.sln
)ができているはずです。
5. Visual Studio 2010で実行する
ソリューションファイル(SampleCMakeOpenCV.sln
)をダブルクリックします。
ソリューションの規定のスタートアッププロジェクトが「ALL_BUILD」になっていると思うので、プロジェクトMyProjectを右クリックして、「スタートアッププロジェクトに指定」をクリックします。
最後に、ビルドして実行します。上手くいけば、Lennaの絵が表示されるはず。
結局、何がうれしいのか?
最初は普通にプロジェクトを設定するのと同じぐらい面倒ですが、一度CMakeLists.txtを作ってしまえば、これを使い回しできます。
つまり、次回から新しいOpenCVプロジェクトを作成する際に、楽ができます。
OpenCV以外のライブラリでもCMakeの機能を使えば似たような手順で設定ができるので、ライブラリが増えれば増えるほどCMakeの恩恵が大きくなります。
ぜひ楽をするためにCMakeを使ってみてはいかがでしょうか。