首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建Cairo/Harfbuzz?

如何构建Cairo/Harfbuzz?
EN

Stack Overflow用户
提问于 2017-01-20 23:32:17
回答 2查看 1.1K关注 0票数 3

开罗依赖于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 -也许它是在试图构建一个动态链接库:(

有没有办法在不丢失重要功能的情况下解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-23 22:20:22

在freetype和HarfBuzz之间也有循环依赖关系。

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

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

代码语言:javascript
复制
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=no

2)使用以下方式构建HarfBuzz:

代码语言:javascript
复制
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-fontconfig=no --with-cairo=no --with-sysroot=/usr/x86_64-w64-mingw32

3)使用以下命令构建Freetype:

代码语言:javascript
复制
./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=yes

4)构建fontconfig。

5)建设开罗。

还没有完全测试,但应该可以工作。

票数 2
EN

Stack Overflow用户

发布于 2017-03-16 18:44:09

我最近进入了harfbuzz场景,我编写并收集了一些依赖于freetype2、harfbuzz和cairo的基本harfbuzz example.Scripts。这是link。要运行它们,只需输入python3 filename.py

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41767193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档