Добавить временный путь к pkg-config в сценарии CMake?

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

Я попытался добавить указанный пользователем путь к 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-config из терминала с измененным набором PKG_CONFIG_PATH, он находит файл pc. Что я делаю не так? Как я могу заставить pkg_search_module работать? Я бы не хотел вызывать pkg-config напрямую из CMake.


person usr1234567    schedule 07.12.2013    source источник


Ответы (2)


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

set( ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig" )
person lgnom    schedule 24.09.2014
comment
Вы правы, это правильный путь, когда используется CMake 3.0 или старше. С 3.1 он будет включен автоматически. - person usr1234567; 24.09.2014

Это известная проблема, и заявка существует в системе отслеживания ошибок CMake, но она заблокирован из-за отсутствия интереса разработчиков. Я думаю, что сначала нужно предоставить патч ...

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

person usr1234567    schedule 11.12.2013