2016-06-30 9 views
0

私はcmakeを使ってC++とOpenCVで書かれた簡単なDisplayImageプロジェクトを正常にコンパイルしています。私はこれらの指示に従った:http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.htmlインクルードファイルとライブラリの場所をcmakeがどのように知ることができますか?

cmake_minimum_required(VERSION 2.8) 
project(DisplayImage) 
find_package(OpenCV REQUIRED) 
include_directories(${OpenCV_INCLUDE_DIRS}) 
add_executable(DisplayImage DisplayImage.cpp) 
target_link_libraries(DisplayImage ${OpenCV_LIBS}) 

私が意味する、私はOpenCVのを検索するためにそれを伝えるべきではない:私は本当にcmakeのはCMakeLists.txtファイルからOpenCVの含みとLIBSを検索することができますどのように取得することはできませんか?例えば、/ usr/local/libまたは/ usr/local/include/opencv ...
OpenCVを使用するには、OpenCVを使用したい場所と場所を指定しないでください。私は何かが不足していると思う..ヘルプをしてください!

+0

私はCMakeにはプロがありませんが、find_packageが鍵です。これが役立つかどうかわからない:https://cmake.org/cmake/help/v3.0/command/find_package.html – Micka

+0

https://cmake.org/Wiki/CMake:How_To_Find_Libraries#How_package_finding_works – Micka

答えて

1

find_packageは、cmakeモジュール(つまりスクリプト)を実行します。 OpenCV用のあらかじめ定義されたディレクトリ。このモジュールはOpenCV_INCLUDE_DIRSやOpenCV_LIBSのようなcmake変数を設定します。あなたが正しくやっているように、あなたのプロジェクトの適切なリストにこれらのディレクトリとライブラリを追加する必要があります。これは、あなたのプロジェクトが何をしているかによって異なります:同じmakeファイル内に複数の実行可能ファイルやライブラリすべてのライブラリをすべての実行可能ファイル/ライブラリにリンクする必要はありません。

モジュールがどのように動作するか興味があれば、ご覧になれます。通常は/usr/share/cmake-2.8/Modulesにあります(使用しているcmakeのバージョンで "2.8"を置き換えてください)。私は自分のマシン上にFindOpenCV.cmakeファイルを持っていないので、OpenCVで来ていると思います。他のFindスクリプトにはcmake自体が付属しているので、そこにはたくさんのファイルが既にあります。 (ディレクトリにはfind_packageスクリプトだけでなく、他のモジュールもあります)

関連する問題