【问题标题】:How to refer to data files in a pkg-config package with the autotools and pkg-config?如何使用 autotools 和 pkg-config 引用 pkg-config 包中的数据文件?
【发布时间】:2015-02-24 20:07:48
【问题描述】:

我正在尝试创建一个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 以使其正常工作?

【问题讨论】:

标签: homebrew autoconf pkg-config


【解决方案1】:

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

您可以使用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 脚本中解决这个问题。

【讨论】:

    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多