我怎么知道在哪里安装我的.pc文件?这些文件放在不同操作系统的不同位置。目标是能够$(INSTALL) mylib.pc $$(pkg-config --pcdir)
在安装目标中使用类似的东西。我以为pkg-config
能以某种方式告诉我,但找不到任何东西。
我正在寻找可在普通 Makefile 中使用的“独立”解决方案(必须不需要自动工具或类似工具的支持)。
我怎么知道在哪里安装我的.pc文件?这些文件放在不同操作系统的不同位置。目标是能够$(INSTALL) mylib.pc $$(pkg-config --pcdir)
在安装目标中使用类似的东西。我以为pkg-config
能以某种方式告诉我,但找不到任何东西。
我正在寻找可在普通 Makefile 中使用的“独立”解决方案(必须不需要自动工具或类似工具的支持)。
从 pkg-config 0.24 开始,您可以执行“pkg-config --variable=pc_path pkg-config”。
更新:显然现在有一种方法可以做到这一点:
pkg-config --variable pc_path pkg-config
在这个错误报告中找到(见评论#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;}'
它应该进入 ${libdir}/pkgconfig(即 ${prefix}/lib/pkgconfig)
基本上,如果您安装库并将它们放入 ${libdir} 中,那么您的 .pc 文件应该在 ${libdir}/pkgconfig 中而不是其他任何地方。
不幸的是,对于股票pkg-config
安装(对于版本 0.23),没有办法提取默认的“pc 路径”,除非strings
在二进制文件上运行(例如,strings /usr/bin/pkg-config | grep '/usr/.*/pkgconfig'
)。
如果您能够安装自定义构建,只需修补它以PKG_CONFIG_PC_PATH
使用适当的选项写出运行时的值。
另一个可能对您没有帮助的选项(但为了完整性我还是会提到),是PKG_CONFIG_PATH
在调用pkg-config
.