homebrew - 自制公式中的 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 库的最佳方法是什么。
解决方案
了解如何编写 Hombrew 公式的最简单方法是查看现有公式。对于您的情况,您可以MuPDF
查看基于 X11 的轻量级 PDF 和 XPS 查看器。在其公式中,您将找到解决方案:
depends_on :x11
推荐阅读
- c++ - 没有 constexpr 的前向声明 - 原因是什么?
- aem - AEM版本升级后组件操作不正确
- javascript - Markdown 文件无法与 js 库一起正常工作,换行问题
- elasticsearch - 了解通过滚动查询或时间点 API 保持打开的 Elasticsearch 搜索上下文的开销
- flutter - 如何在颤动中删除文本字段光标气泡
- javascript - 我的 javascript 库无法处理所有文档元素(调用 js 库问题之前和之后)
- amcharts4 - 如何显示线系列圆形项目符号与Amcharts 4相交的所有工具提示文本?
- r - 尝试在 R 中应用创建的函数
- java - 主题:Android Firebase 中的查询——数据检索
- c# - C# 如何知道如何正确修改命名空间以使其工作?