Ala*_*irG 5 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 之间也存在循环依赖关系。
请注意,fontconfig 和 Cairo 仅用于使用 HarfBuzz 构建的测试和工具,因此将它们配置出来似乎是安全的:
使用以下命令构建 Freetype:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=no
使用以下命令构建 HarfBuzz:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-fontconfig=no --with-cairo=no --with-sysroot=/usr/x86_64-w64-mingw32
使用以下命令构建 Freetype:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=yes
构建字体配置。
建设开罗。
尚未完全测试,但应该可以工作。