2013-12-07 1 views
12

Для внешних библиотек пользователь может указать нестандартное местоположение, добавив путь к CMAKE_FLAGS или добавив -DMYLIB_ROOT. В сценарии CMake я хочу найти файл pkg-config библиотеки. Поскольку файл pc не находится в стандартной папке, он не найден pkg-config с FindPkgConfigpkg_search_module.Добавить временный путь к pkg-config в сценарии CMake?

Я пытался добавить пользовательскую данный путь к PKG_CONFIG_PATH, но, казалось, игнорировали:

include(FindPkgConfig) 
set(PKG_CONFIG_PATH "${PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig") 
pkg_search_module(PKG_MYLIB mylib) 

if(${PKG_MYLIB_FOUND}) 
... 

Когда я называю PKG-конфигурации из терминала с модифицированным PKG_CONFIG_PATH набора, это найти файл ПК , Что я делаю не так? Как я могу получить pkg_search_module? Я хотел бы избежать вызова pkg-config непосредственно из CMake.

ответ

8

Это известная проблема и ticket exists in CMake's bugtracker, но она заблокирована из-за недостатка интереса разработчика. Я предполагаю, что нужно сначала предоставить патч ...

Редактировать: Согласно багтрекеру эта функция была реализована и является частью CMake 3.1.

10

Может быть, следующий будет делать работу

set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig") 
+0

Вы правы, это путь, когда CMake 3.0 или старше используется. С 3.1 он будет включен автоматически. – usr1234567

+0

Кажется, это единственное решение, которое работает для меня ... –