首页 > 解决方案 > 自制公式中的 x11 依赖项?

问题描述

在自制公式中指定 x11 依赖项的正确方法是什么?默认 superenv 从其参数中删除 /opt/X11/lib。

我正在为一个包编写一个公式,我可以使用通常的配置、make install 在自制程序之外构建它。

所以我有这个安装功能:

  def install
        ENV["PKG_CONFIG_PATH"] = "/usr/local/opt/qt/lib/pkgconfig"
        # ENV["PATH"] = "/usr/local/bin:/usr/bin:/bin" <--- work around
        Dir.chdir("codebase")
        system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}"
        system "make install"    
  end

得到回显的链接阶段显示

/bin/sh ../../../../libtool  --tag=CXX   --mode=link clang++ .... -I /opt/X11/include ..... -L/opt/X11/lib ...

但是链接失败了

 ld: library not found for -lX11

如果我将此添加到类定义的顶部,则构建成功 env :std

或者,我可以在构建函数中设置 PATH 并且构建成功。

这是有道理的,因为在PATH 的开头brew install/usr/local/Homebrew/Library/Homebrew/shims/super出现在 PATH 的开头,并且该目录有一个 clang++,其中包括剥离 /opt/X11 组件。

我认为这种行为是有充分理由的,并且很好奇指定 X11 库的最佳方法是什么。

标签: homebrewx11

解决方案


了解如何编写 Hombrew 公式的最简单方法是查看现有公式。对于您的情况,您可以MuPDF查看基于 X11 的轻量级 PDF 和 XPS 查看器。在其公式中,您将找到解决方案:

depends_on :x11

推荐阅读