c++ - 如何通过柯南和 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
参数。不幸的是,这没有任何改变。
解决方案
以下步骤使它对我有用:
- 将
PKG_CONFIG_PATH
环境变量设置为pcfiledir
找到的tools.PkgConfig
- 不要传递任何
pkg_config_paths
totools.CMake.configure()
,它不能很好地处理绝对路径并且与环境变量冲突 - 在步骤中添加系统范围内安装的库(
secret-1
在我的情况下)cpp_info.system_libs
package_info
感谢@uilianries 的有用评论!
推荐阅读
- python - “因子分析器”库中相关矩阵的奇怪输出
- mysql - 每次在mysql中更新时,如何使触发器累积数据?
- html - 可滚动 ol 之后和之前
- python - Selenium AttributeError 'list' 对象没有属性 send_keys
- react-query - 克服 useQuery 中的这些 TS 错误?
- join - 在 Rust 中内连接两个 `HashMap`
- python - 如何从 GraphQL 获得超过 100 个结果
- python - HB003333.000 文件(MSTAR 文件)的打开编码
- move - 检测按键输入
- authentication - 切换到生产环境和 Https 时的 Asp Net Core Identity 问题