cmake - 如何帮助“FindPkgConfig.cmake”找到一个包?
问题描述
我正在尝试编译我的项目,而我的项目正在使用sqlcipher
包。sqlcipher
被克隆并安装在自定义路径中,我通过文件导出了此$PATH
路径~/.bashrc
。配置后,如果我sqlcipher
在终端中输入它的工作正常,但是当我尝试cmake
在同一个终端上执行我的项目时,它会给出
-- Checking for one of the modules 'sqlcipher'
CMake Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:578 (message):
None of the required 'sqlcipher' found
我想我必须为 cmake 提供这个自定义路径才能找到这个包。如何为 cmake 提供自定义路径?我在哪里做错了?
解决方案
模块FindPkgConfig.cmake定义了函数pkg_check_modules()
和pkg_search_module
,它们使用pkg-config实用程序来定位包。
PKG_CONFIG_PATH
该实用程序本身会提示从环境变量中进行搜索,其中包含带有文件的冒号分隔 ( :
) 路径:.pc
export PKG_CONFIG_PATH="/home/iam/git/LIB_ROOT/lib/pkgconfig:${PKG_CONFIG_PATH}"
cmake <...>
但是 CMake 函数也从CMAKE_PREFIX_PATH
变量中获取提示,该变量包含分号- 分隔( ;
)安装包的前缀。两种变量流都被接受,环境和CMake流:
export CMAKE_PREFIX_PATH="/home/iam/git/LIB_ROOT;${CMAKE_PREFIX_PATH}"
cmake <...>
或者
cmake -DCMAKE_PREFIX_PATH:PATH=/home/iam/git/LIB_ROOT <...>
设置CMAKE_PREFIX_PATH
方法是提示 CMake 搜索包的常用方法:https ://stackoverflow.com/a/34797156/3440745 。
推荐阅读
- pyspark - AWS Pyspark Glue 作业在glueContext.write_dynamic_frame.from_jdbc_conf 处失败
- javascript - 无法获取 /peerjs/peerjs/id
- javascript - 变量未定义 MongoDB $function
- mongodb - 如何将默认 createdAt 和 updateAt 作为 Today 添加到旧的 mongo 数据?
- r - 转换数据以满足正态假设
- javascript - 如何在 CDN VueJS 应用程序中加载信号
- python - While 循环(非常简单)
- hibernate - java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:u
- swift - 表情符号键盘 SwiftUi
- python-3.x - 如何比较python中单个句子的第一个字母?