首页 > 解决方案 > 如何通过柯南和 CMake 查找 pkg-config 的 .pc 文件

问题描述

如何让 pkg-config 找到通过柯南安装的依赖项和不在柯南中的依赖项?

我的目标包是使用 CMake 构建的,并使用 pkg-config 和pkg_check_modules(). 其中一个依赖项 ( glib-2.0) 是通过柯南安装的,另一个 ( 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 工具的配置方法有一个pkg_config_paths参数。不幸的是,这没有任何改变。

标签: c++cmakepkg-configconan

解决方案


以下步骤使它对我有用:

  • PKG_CONFIG_PATH环境变量设置为pcfiledir找到的tools.PkgConfig
  • 不要传递任何pkg_config_pathsto tools.CMake.configure(),它不能很好地处理绝对路径并且与环境变量冲突
  • 在步骤中添加系统范围内安装的库(secret-1在我的情况下)cpp_info.system_libspackage_info

感谢@uilianries 的有用评论!


推荐阅读