установить путь конфигурации PKG в cmake
Я построил opencv локально и установил его в локальный каталог ( не системный по умолчанию ). В формате OpenCV.ПК присутствует под папкой pkgconfig в этой локальной папке. Как я могу найти этот opencv.ПК от cmake, потому что я хочу связать и включить файлы opencv из моей программы.
pkg_search_module(<PREFIX> [REQUIRED] [QUIET] <MODULE> [<MODULE>]*)
не имеет параметра, в котором я могу заставить команду использовать определенный путь ( похожий на подсказки с find_package ()), а не системный по умолчанию.
Так в основном .cmake работает:
find_package( OpenCV REQUIRED HINTS "my/path/to/share/OpenCVConfig.cmake")
но я хотел бы использовать opencv.ПК, расположенный под " my / path/to / pkgconfig(opencv.pc
2 ответов
после проведения некоторых исследований и намека от @OlivierM, я нашел ответ.
вот шаги:
Метод I :
CMAKE_PREFIX_PATH можно установить для поиска .ПК файлы
set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/libs/opencv-install/lib/pkgconfig")
метод II Второй метод-использовать pkg_config_path, который является системной переменной среды для поиска .файлы ПК.
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, то каталоги include будут ABCD_INCLUDE_DIRS
переменная PKG_OPENCV_INCLUDE_DIRS и PKG_OPENCV_LIBRARIES содержит файлы заголовков ( этап компиляции ) и библиотеки (этап ссылки ) соответственно.
одна очень важная вещь, которую я заметил, заключалась в том, что переменная PKG_OPENCV_LIBRARIES просто предоставляет библиотеки, а не путь к библиотеке на этапе ссылки. Чтобы использовать путь к библиотеке также в одной команде, нужно использовать
PKG_OPENCV_LDFLAGS
эта переменная содержит путь к библиотеке, а также все библиотеки, перечисленные в файле пакета конфигурации.
для exmaple:
include_directories(${PKG_OPENCV_INCLUDE_DIRS})
target_link_libraries (FINAL_BINARY ${PKG_OPENCV_LDFLAGS})
вы можете установить PKG_CONFIG_PATH
с линией CMake:
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/my/path/to/pkgconfig")
Я сделал этот обходной путь в этом
интересно, кажется CMake 3.1 расширяет PKG_CONFIG_PATH
С некоторой переменной CMake см.:https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3df51470