Как найти .p c файлы для pkg-config через Conan и CMake - PullRequest
0 голосов
/ 18 февраля 2020

Как я могу заставить pkg-config найти обе зависимости, установленные через Conan, и зависимости, которых нет в Conan?

Мой целевой пакет собран с использованием CMake и находит его зависимости с помощью pkg-config с pkg_check_modules(). Одна из зависимостей (glib-2.0) устанавливается через Conan, другая (libsecret-1) - нет, так как нет пакета.

В моем conanfile я настраиваю pkg-config_installer как требование к сборке (self.build_requires("pkg-config_installer/0.29.2@bincrafters/stable"). При сборке пакета CMake корректно вызывает этот pkg-config.

В результате pkg-config просто находит glib, но не может найти libsecret. Я предполагаю, что он находит .pc файлы для зависимостей, установленных через Конан, но не находит libsecret-1.pc, который находится в /usr/lib/pkgconfig/ в моей системе.

Я попытался указать инструменту Конана CMake использовать этот путь: tools.PkgConfig("libsecret-1").variables["pcfiledir"] говорит мне, где он и метод настройки инструмента CMake имеет параметр * 1017. * К сожалению, это ничего не меняет.

1 Ответ

0 голосов
/ 19 февраля 2020

Следующие шаги позволили мне сработать:

  • установить для переменной окружения PKG_CONFIG_PATH значение pcfiledir, найденное tools.PkgConfig
  • , чтобы не пропустить * От 1009 * до tools.CMake.configure(), он плохо обрабатывает абсолютные пути и конфликтует с переменной окружения
  • добавляет общесистемную установленную библиотеку (secret-1 в моем случае) к cpp_info.system_libs в package_info step

Спасибо @uilianries за полезный комментарий!

...