如何使用autotools和pkg-config引用pkg-config包中的数据文件?

时间:2014-12-28 09:49:00

标签: homebrew autoconf pkg-config

我正在尝试创建Homebrew formula for gtk-mac-integration。在bindings/python/gtkosx_application中运行make失败:

/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file '/usr/local/Cellar/gtk-mac-integration/2.0.7/share/pygobject/2.0/codegen/h2def.py': [Errno 2] No such file or directory
make[3]: *** [gtkosx_application.defs] Error 2

这是因为Makefile尝试在错误的位置找到h2def.py文件:

gtkosx_application.defs: $(headers)
        $(PYTHON) $(datadir)/pygobject/2.0/codegen/h2def.py $(headers) > $@

我很清楚为什么会失败:$(datadir)指向要安装的软件包的共享目录(gkt-mac-integration)。因为Homebrew将所有包安装到它们自己的前缀(/usr/local/Cellar/...)中,所以对于gtk-mac-integration和pygobject来说它们是不一样的。

我知道可以使用

找出pygobject数据目录的位置
pkg-config --variable=datadir pygobject-2.0

我不认为正确的解决方法是用上面的字符串替换Makefile中的datadir吗?我应该如何调整configure.acMakefile.am以使其正常工作?

1 个答案:

答案 0 :(得分:0)

是的,这听起来像构建系统中的一个错误。

您可以使用inreplace工具对其进行修补。在def install

之后插入此内容

inreplace %w[bindings/python/gtkmacintegration/Makefile.am bindings/python/gtkmacintegration/Makefile.in bindings/python/gtkosx_application/Makefile.am bindings/python/gtkosx_application/Makefile.in], '$(datadir)/pygobject', | %x[pkg-config --variable=datadir pygobject-2.0].chomp + '/pygobject'

(我试过这个。之后的公式就构建了。)

你应该向上游报告。他们应该更改自己的构建系统,以便在configure脚本中对其进行排序。