开罗依赖于FontConfig。FontConfig依赖于Freetype。我已经构建了FreeType,但是当我尝试构建FontConfig时,我得到了链接错误,因为FreeType需要HarfBuzz。
当我尝试构建Harfbuzz时,它依赖于FreeType。因此,我们有一个循环依赖。在这一点上,makefile被破坏了:当它试图构建测试时,它们无法链接,因为它们需要来自Harbuzz本身的符号。这可以通过在链接行中使用两次HarfBuzz来解决。或者删除所有测试,这就是我所做的。这样就解决了这个问题。
Harfbuzz有一个名为"helper-cairo.cc“的文件。当我尝试编译它时,它会报告一个不匹配的FontConfig头文件,所以很明显这与FontConfig有依赖关系。但是,如果不先构建HarfBuzz,我就无法构建FontConfig!
我不知道如何解决这种依赖关系。也许我可以在构建HarfBuzz时禁用Cairo helper,使用生成的库构建FontConfig,然后使用生成的FontConfig重新构建HarfBuzz,然后重新构建FontConfig?这一切似乎都是一个很大的麻烦。
我是用MinGW构建的,而Windows不喜欢未解析的符号,所以我不认为我可以用共享库来解决这个问题。我真的不确定为什么我在链接FontConfig时需要HarfBuzz -也许它是在试图构建一个动态链接库:(
有没有办法在不丢失重要功能的情况下解决这个问题?
发布于 2017-01-23 22:20:22
在freetype和HarfBuzz之间也有循环依赖关系。
请注意,只有使用HarfBuzz构建的测试和工具才需要fontconfig和Cario,因此将它们配置出来似乎是安全的:
1)使用以下方法构建Freetype:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=no2)使用以下方式构建HarfBuzz:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-fontconfig=no --with-cairo=no --with-sysroot=/usr/x86_64-w64-mingw323)使用以下命令构建Freetype:
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=yes4)构建fontconfig。
5)建设开罗。
还没有完全测试,但应该可以工作。
发布于 2017-03-16 18:44:09
我最近进入了harfbuzz场景,我编写并收集了一些依赖于freetype2、harfbuzz和cairo的基本harfbuzz example.Scripts。这是link。要运行它们,只需输入python3 filename.py
https://stackoverflow.com/questions/41767193
复制相似问题