Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何通过Conan和CMake查找pkg config的.pc文件_C++_Cmake_Pkg Config_Conan - Fatal编程技术网

C++ 如何通过Conan和CMake查找pkg config的.pc文件

C++ 如何通过Conan和CMake查找pkg config的.pc文件,c++,cmake,pkg-config,conan,C++,Cmake,Pkg Config,Conan,如何使pkg config同时查找通过Conan安装的依赖项和不在Conan中的依赖项 我的目标包是使用CMake构建的,并使用pkg config和pkg\u check\u modules()查找其依赖项。其中一个依赖项(glib-2.0)是通过Conan安装的,另一个(libsecret-1)不是,因为没有软件包 在我的conanfile中,我将pkg-config_安装程序配置为一个构建需求(self.build_requires)(“pkg-config_安装程序/0.29”)。2@b

如何使pkg config同时查找通过Conan安装的依赖项和不在Conan中的依赖项

我的目标包是使用CMake构建的,并使用pkg config和
pkg\u check\u modules()
查找其依赖项。其中一个依赖项(
glib-2.0
)是通过Conan安装的,另一个(
libsecret-1
)不是,因为没有软件包

在我的conanfile中,我将pkg-config_安装程序配置为一个构建需求(
self.build_requires)(“pkg-config_安装程序/0.29”)。2@bincrafters/稳定”)
。构建包时,CMake会正确调用此pkg配置

因此,pkg config可以找到glib,但找不到libsecret。我假设它可以找到通过Conan安装的依赖项的
.pc
文件,但找不到
libsecret-1.pc
,它位于我的系统上的
/usr/lib/pkgconfig/


我试着告诉柯南的CMake工具使用这个路径:
tools.PkgConfig(“libsecret-1”).variables[“pcfiledir”]
告诉我它在哪里,CMake工具的configure方法有一个
pkg\u config\u path
参数。不幸的是,这并没有改变任何东西。

以下步骤使它对我有效:

  • 将环境变量
    PKG\u CONFIG\u PATH设置为
    tools.PkgConfig
  • 不要将任何
    pkg\u config\u路径
    传递到
    tools.CMake.configure()
    ,它不能很好地处理绝对路径,并且与环境变量冲突
  • package\u info
    步骤中将系统范围的已安装库(
    secret-1
    在我的例子中)添加到
    cpp\u info.system\u libs

感谢@uiliaries提供的有用评论!

查看文档:您有3种不同的方法来自定义前缀。您可以附加PKG\u CONFIG\u路径、设置--define prefix参数,甚至设置PKG\u CONFIG\u$PACKAGE\u$VARIABLE