2017-01-20 5 views
2

Cairo dépend de FontConfig. FontConfig a une dépendance sur Freetype. J'ai construit FreeType, mais quand j'essaye de construire FontConfig j'obtiens des erreurs de lien pendant que FreeType a besoin de HarfBuzz. Quand j'essaye de construire Harfbuzz, il a une dépendance sur FreeType. Nous avons donc une dépendance circulaire. Les makefiles à ce stade sont cassés: Quand il essaye de construire les tests, ils ne parviennent pas à se lier parce qu'ils ont besoin de symboles de Harbuzz lui-même. Ceci est résolu en ayant HarfBuzz deux fois dans la ligne de liaison. Ou en supprimant tous les tests, ce que j'ai fait. Donc, cela a résolu ce problème.Comment construire Cairo/Harfbuzz?

Harfbuzz a un fichier appelé "helper-cairo.cc". Lorsque j'essaie de compiler ceci, il se plaint d'un fichier d'en-tête FontConfig erroné, donc il y a une dépendance sur FontConfig. Cependant, je ne peux pas construire FontConfig sans d'abord construire HarfBuzz!

Je ne sais pas comment résoudre cette dépendance. Peut-être que je peux désactiver l'aide du Caire lors de la construction de HarfBuzz, utiliser la bibliothèque résultante pour construire FontConfig, puis reconstruire HarfBuzz avec le résultat FontConfig, puis reconstruire FontConfig? Tout cela semble une grande nuisance.

Je construis avec MinGW et Windows Les DLL n'aiment pas les symboles non résolus, donc je ne pense pas que je puisse résoudre cela avec les bibliothèques partagées. Je ne suis pas vraiment sûr pourquoi j'ai besoin HarfBuzz lors de la liaison FontConfig - il est peut-être essayer de construire une DLL :(

Toute idée comment résoudre sans perdre des fonctionnalités importantes

Répondre

1

Il y a aussi une dépendance circulaire entre freetype et HarfBuzz

Notez que fontConfig et Cario ne sont nécessaires que pour les tests et les outils construits avec HarfBuzz et donc il semble raisonnable de les configurer sur:.

1) Construire Freetype en utilisant:

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

2) Construire HarfBuzz en utilisant:

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

3) Construire Freetype en utilisant:

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

4) Construction fontconfig.

5) Construire le Caire.

Pas encore entièrement testé, mais cela devrait fonctionner.

0

j'ai été récemment dans scenario.I HarfBuzz ont écrit et recueilli quelques example.Scripts de HarfBuzz de base se fondent sur freetype2, HarfBuzz et caire. Voici le link. Pour les exécuter, tapez simplement python3 filename.py