如何让 pkg-config 使用 PKG_CONFIG_PATH?

问题描述 投票:0回答:2

我写了一个小库,我正在尝试将它设置为可以与 pkg-config 一起使用,以供我组织中以后可能需要使用它的人使用。所以我的安装程序在 /usr/local/lib/pkgconfig 中放置了一个 .pc 文件,我最近发现由于某种原因,这不在 pkg-config 扫描其 pc 文件的默认目录列表中,尽管 / usr/local 是本地编译软件的规范前缀。所以,我需要将 /usr/local/lib/pkgconfig 添加到 PKG_CONFIG_PATH。

但是,我发现尽管在手册页、pkg-config 自己的错误消息和网上到处都有声明,但 pkg-config 实际上并没有查看 PKG_CONFIG_PATH。错误消息告诉我将 /usr/local/lib/pkgconfig(其中包含我正在寻找的 .pc 文件)添加到 PKG_CONFIG_PATH,而我显然已经这样做了。

[chris@delphinus-a pkgconfig]$ pwd
/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ ls
libexample.pc
[chris@delphinus-a pkgconfig]$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ echo $PKG_CONFIG_PATH
/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ pkg-config --cflags libexample
Package libexample was not found in the pkg-config search path.
Perhaps you should add the directory containing `libexample.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libexample', required by 'virtual:world', not found
[chris@delphinus-a pkgconfig]$ echo $PKG_CONFIG_PATH
/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ pkg-config --variable pc_path pkg-config
/usr/lib64/pkgconfig:/usr/share/pkgconfig
[chris@delphinus-a pkgconfig]$ pkg-config --version
1.6.3

libexample.pc的内容:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include

Name: libexample
Description: example library.

Libs: -L${libdir}  -lpthread -ltimeutil -lczmq -lzmq
Cflags: -I${includedir}

所以,如果 PKG_CONFIG_PATH 确实是我需要设置的环境变量,我如何让 pkg-config 实际使用它?或者我在这里还缺少什么?这是在 Fedora 31 中,FWIW.

pkg-config
2个回答
2
投票

显然(从非常大的版本号来看),您正在使用 pkg-config 的其他一些实现:即,从this page我收集到它是一个叫做

pkgconf
的东西,旨在以某种方式取代FDO
pkg-config 
程序。

要成功

PKG_CONFIG_PATH
,我想,你应该从FDO安装一个真正的
pkg-config
,它的版本应该在0.29.x.

范围内

0
投票

除了@Ruslan 写的内容:我发现你也必须

export PKG_CONFIG_LIBDIR=<your custom library directory>
(我没有尝试取消设置
PKG_CONFIG_DIR
,但我想这也是必要的)。

所以在你的情况下

export PKG_CONFIG_LIBDIR=/usr/local/lib
除了其他出口。这对我来说是固定的。这很烦人;我不明白为什么
autotools
误导到
PKG_CONFIG_DIR
并省略其他变量。他们可能忘记更新错误输出。

© www.soinside.com 2019 - 2024. All rights reserved.