首页 > 解决方案 > 如何帮助“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 提供自定义路径?我在哪里做错了?

标签: 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 。


推荐阅读