【问题标题】:How to find .pc files for pkg-config via Conan and CMake如何通过柯南和 CMake 查找 pkg-config 的 .pc 文件
【发布时间】:2020-02-18 11:32:56
【问题描述】:

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

我的目标包是使用 CMake 构建的,并使用带有 pkg_check_modules() 的 pkg-config 找到它的依赖项。其中一个依赖项(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 文件,但没有找到位于我系统上的/usr/lib/pkgconfig/libsecret-1.pc

我尝试告诉柯南的 CMake 工具使用此路径:tools.PkgConfig("libsecret-1").variables["pcfiledir"] 告诉我它在哪里,并且 CMake 工具的配置方法有一个 pkg_config_paths 参数。不幸的是,这没有任何改变。

【问题讨论】:

标签: c++ cmake pkg-config conan


【解决方案1】:

以下步骤使它对我有用:

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

感谢@uilianries 的有用评论!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多