2017-01-20 3 views
2

Kairo hat eine Abhängigkeit von FontConfig. FontConfig hat eine Abhängigkeit von Freetype. Ich habe FreeType gebaut, aber wenn ich versuche, FontConfig zu erstellen, erhalte ich Linkfehler, da FreeType HarfBuzz benötigt.Wie baue ich Kairo/Harfbuzz?

Wenn ich versuche, Harfuzz zu bauen, hat es eine Abhängigkeit von FreeType. Somit haben wir eine zirkuläre Abhängigkeit. Die Makefiles sind an dieser Stelle kaputt: Wenn sie versucht, die Tests zu erstellen, können sie keine Verbindung herstellen, da sie Symbole von Harbuzz selbst benötigen. Dies ist lösbar, wenn HarfBuzz in der Verbindungslinie zweimal vorhanden ist. Oder indem ich alle Tests beseitige, was ich getan habe. Das hat dieses Problem gelöst.

Harfuzz hat eine Datei namens "helper-cairo.cc". Wenn ich versuche, das zu kompilieren, klagt es über eine fehlerhafte FontConfig-Headerdatei, so dass eindeutig eine Abhängigkeit von FontConfig besteht. Allerdings kann ich FontConfig nicht erstellen, ohne zuerst HarfBuzz zu bauen!

Ich weiß nicht, wie diese Abhängigkeit gelöst werden soll. Vielleicht kann ich den Cairo-Helfer beim Erstellen von Harfuzz deaktivieren, die resultierende Bibliothek verwenden, um FontConfig zu erstellen, dann HarfBuzz mit der resultierenden FontConfig neu erstellen und FontConfig dann neu erstellen? Es scheint alles ein großes Ärgernis.

Ich baue mit MinGW und Windows DLLs mögen keine ungelösten Symbole, also glaube ich nicht, dass ich das mit geteilten Bibliotheken auflösen kann. Ich bin nicht wirklich sicher, warum ich HarfBuzz brauchen, wenn FontConfig Verknüpfung - vielleicht wird es versucht, eine DLL erstellen :(

Irgendwelche Ideen wie diese zu lösen, ohne dass wichtige Funktionalität zu verlieren

Antwort

1

Es gibt auch eine zirkuläre Abhängigkeit zwischen Freetype ist und HarfBuzz

Beachten sie, dass fontconfig und Cario sind nur für die Tests und Tools mit HarfBuzz gebaut benötigt und somit erscheint es sicher, sie konfigurieren aus.

1) Erstellen sie mit Freetype:

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

2) Baue HarfBuzz Verwendung:

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

3) Baue Freetype verwendet:

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

4) Baue fontconfig.

5) Bauen Sie Kairo auf.

Noch nicht vollständig getestet, sollte aber funktionieren.

0

Ich habe kürzlich in harfuzz Szenario.Ich habe geschrieben und einige grundlegende harfubbuzz Beispiel gesammelt.Skripte stützen sich auf freetype2, harfubbuzz und cairo. Hier ist die link. Um sie auszuführen, geben Sie einfach python3 filename.py

ein