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

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

Я попытался добавить заданный пользователем путь к 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.

Ответ 1

Это известная проблема, и в CMake bugtracker существует

Ответ 2

Возможно, следующее будет выполнять работу

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