pkg-config:平台中立的方法来找出我的.pc文件的安装位置?

时间:2010-02-05 18:31:49

标签: build cross-platform makefile pkg-config

我如何知道 .pc 文件的安装位置?这些文件放在不同操作系统的不同位置。目标是能够在安装目标中使用$(INSTALL) mylib.pc $$(pkg-config --pcdir)之类的内容。我以为pkg-config能以某种方式告诉我,但找不到任何东西。

我正在寻找可在普通Makefile中使用的“独立”解决方案(不得要求autotools或类似产品提供支持)。

4 个答案:

答案 0 :(得分:11)

从pkg-config 0.24开始,您可以执行“pkg-config --variable = pc_path pkg-config”。

https://bugs.freedesktop.org/show_bug.cgi?id=14975

答案 1 :(得分:5)

更新:显然现在有办法实现这一目标:

pkg-config --variable pc_path pkg-config

bug report中找到(见评论#4)。当前的手册页似乎记录了这一点。

原始回答:

可怕的hackish解决方案(假设bourne shell):

pkg-config --debug 2>&1 |grep Scanning | sed -e 's/Scanning directory //' -e "s/'//g"

这可能会为您提供多个位置。

@just某人

编辑

较短版本

pkg-config --debug 2>&1 | sed -ne '/Scanning directory /s///p'

并在第一个目录后停止:

pkg-config --debug 2>&1 | sed -ne '/Scanning directory /{s///p;q;}'

答案 2 :(得分:3)

它应该进入$ {libdir} / pkgconfig(即$ {prefix} / lib / pkgconfig)

基本上如果您安装库并且它们都在$ {libdir}中,那么您的.pc文件应该在$ {libdir} / pkgconfig中,而不是其他地方。

答案 3 :(得分:1)

不幸的是,对于库存pkg-config安装(版本0.23),没有办法提取默认的“pc路径”,而不是在二进制文件上运行strings(例如{{1 }})。

如果您能够安装自定义版本,只需对其进行修补,以便在使用适当选项运行时写出strings /usr/bin/pkg-config | grep '/usr/.*/pkgconfig'的值。

另一个选项,可能对你没有帮助(但我完全没有提到),是在调用PKG_CONFIG_PC_PATH时设置PKG_CONFIG_PATH环境变量。