@OlivierMからいくつかの研究やヒントを行った後、私は答えを見つけました。ここで
は手順は次のとおりです。PKG_CONFIG_PATHが設定されていない場合 、そしてCMAKE_PREFIX_PATHは.PCファイルにpkgconfigを使用するには、$
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/libs/opencv-install/lib/pkgconfig")
方法を見つけるために設定することができます。 PKG_CONFIG_PATHがすでに設定されている場合、ENVを使用して設定されます。
set(ENV{PKG_CONFIG_PATH} "${CMAKE_SOURCE_DIR}/libs/opencv-install/lib/pkgconfig")
次
find_package(PkgConfig REQUIRED)
pkg_search_module(PKG_OPENCV REQUIRED opencv) # this looks for opencv.pc file
PKG_OPENCV変数は、自由に名前を付けることができますので、予めご了承ください。それが何であれ、接頭辞として使用されます。たとえば、ABCDという名前の場合、インクルードディレクトリはABCD_INCLUDE_DIRSになります。
変数PKG_OPENCV_INCLUDE_DIRSおよびPKG_OPENCV_LIBRARIESには、それぞれヘッダファイル(コンパイルステージ)とライブラリ(リンクステージ)が含まれています。
私が気づいた非常に重要なことは、変数PKG_OPENCV_LIBRARIESがライブラリを提供するだけであり、リンク段階ではライブラリパスが提供されないことでした。 1つのコマンドで同様のライブラリ・パスを使用するためには、
PKG_OPENCV_LDFLAGS
を使用するためにこの変数は、ライブラリパスだけでなく、パッケージの設定ファイルにリストされているすべてのライブラリが含まれています。
exmapleため
:私はあなたのコード内の任意pkg_search_moduleを参照してくださいいけない
include_directories(${PKG_OPENCV_INCLUDE_DIRS})
target_link_libraries (FINAL_BINARY ${PKG_OPENCV_LDFLAGS})
。どのようにモジュールを探していますか? – infoclogged
実際には、クロスコンパイルをサポートするために作成した共通ファイルです。私は '' CMakeLists.txt'の先頭に 'find_package'を使いました。 [here](https://github.com/labapart/gattlib/blob/master/CMakeLists.txt#L30)を参照してください – OlivierM