mingw - 我如何建立开罗/Harfbuzz?

标签 mingw cairo fontconfig harfbuzz

Cairo 依赖于 FontConfig。 FontConfig 依赖于 Freetype。我已经构建了 FreeType,但是当我尝试构建 FontConfig 时,我收到链接错误,因为 FreeType 需要 HarfBuzz。

当我尝试构建 Harfbuzz 时,它依赖于 FreeType。因此,我们有一个循环依赖。此时的 makefile 已损坏:当它尝试构建测试时,它们无法链接,因为它们需要来自 Harbuzz 本身的符号。这可以通过在链接行中使用 HarfBuzz 两次来解决。或者通过删除我所做的所有测试。这样就解决了这个问题。

Harfbuzz 有一个名为“helper-cairo.cc”的文件。当我尝试编译它时,它提示缺少 FontConfig 头文件,所以很明显存在对 FontConfig 的依赖。但是,如果不先构建 HarfBuzz,我就无法构建 FontConfig!

我不知道如何解决这种依赖性。也许我可以在构建 HarfBuzz 时禁用 Cairo 助手,使用结果库构建 FontConfig,然后使用结果 FontConfig 重建 HarfBuzz,然后重建 FontConfig?这一切似乎都是一件大麻烦。

我正在使用 MinGW 构建,Windows DLL 不喜欢未解析的符号,所以我认为我无法使用共享库解决这个问题。我不太确定为什么在链接 FontConfig 时需要 HarfBuzz - 也许它正在尝试构建一个 DLL :(

任何想法如何在不丢失重要功能的情况下解决这个问题?

最佳答案

freetype 和 HarfBuzz 之间也存在循环依赖。

请注意,只有使用 HarfBuzz 构建的测试和工具才需要 fontconfig 和 Cario,因此配置它们似乎是安全的:

1) 使用以下方法构建 Freetype:

./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=no

2) 使用以下命令构建 HarfBuzz:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-fontconfig=no --with-cairo=no --with-sysroot=/usr/x86_64-w64-mingw32

3) 使用以下方法构建 Freetype:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=yes

4) 构建字体配置。

5) build 开罗。

尚未完全测试,但应该可以工作。

关于mingw - 我如何建立开罗/Harfbuzz?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41767193/

相关文章:

C编译器警告 "Warning: too many arguments for format"如何修复?

c - Cairo Graphics 在其他语言中比 c 慢吗?例如在 Haskell 中?

R Cairo pdf 字体在 Adob​​e Illustrator 中无法读取

xterm - 无法在 XTerm 中配置字体

centos - 在服务器上使用/安装库,无需 sudo

c++ - 没有qmake可以使用Qt Creator吗?

c++ - 快板 5 + MinGW : Audio Addon Not Working

bash 。传递包含空格的变量

C++ - 使控制台全屏显示?

r - 尝试在 centos 7 服务器上安装 Cairo R 包时出错