Cairo は FontConfig に依存しています。FontConfig は Freetype に依存しています。FreeType をビルドしましたが、FontConfig をビルドしようとすると、FreeType には HarfBuzz が必要なため、リンク エラーが発生します。
Harfbuzz をビルドしようとすると、FreeType に依存します。したがって、循環依存関係があります。この時点でメイクファイルは壊れています。テストをビルドしようとすると、Harbuzz 自体からのシンボルが必要なため、リンクに失敗します。これは、リンク行で HarfBuzz を 2 回使用することで解決できます。または、私が行ったすべてのテストを削除することによって。それで、その問題は解決しました。
Harfbuzz には「helper-cairo.cc」というファイルがあります。これをコンパイルしようとすると、FontConfig ヘッダー ファイルが見つからないというメッセージが表示されるため、FontConfig に依存していることは明らかです。ただし、最初に HarfBuzz をビルドしないと、FontConfig をビルドできません!
この依存関係を解決する方法がわかりません。HarfBuzz をビルドするときに Cairo ヘルパーを無効にし、結果のライブラリを使用して FontConfig をビルドし、結果の FontConfig で HarfBuzz を再ビルドしてから、FontConfig を再ビルドできますか? それはすべて大きな迷惑に思えます。
私は MinGW でビルドしていますが、Windows DLL は未解決のシンボルを好まないため、共有ライブラリでこれを解決できるとは思いません。FontConfig をリンクするときに HarfBuzz が必要な理由がよくわかりません - おそらく DLL を構築しようとしているのでしょう :(
重要な機能を失わずにこれを解決する方法はありますか?