2017-01-20 3 views
2

Каир имеет зависимость от FontConfig. FontConfig имеет зависимость от Freetype. Я создал FreeType, но когда я пытаюсь построить FontConfig, я получаю ошибки ссылок, поскольку FreeType требует HarfBuzz.Как создать Cairo/Harfbuzz?

Когда я пытаюсь построить Harfbuzz, он имеет зависимость от FreeType. Таким образом, мы имеем круговую зависимость. Модифицированные файлы на этом этапе сломаны: когда он пытается построить тесты, они не могут ссылаться, потому что им нужны символы из самого Harbuzz. Это разрешимо с помощью HarfBuzz дважды в линии ссылок. Или удалив все тесты, которые я сделал. Так что эта проблема решена.

У Harfbuzz есть файл под названием «helper-cairo.cc». Когда я пытаюсь скомпилировать это, он жалуется на файл заголовка Mint FontConfig, поэтому отчетливо существует зависимость от FontConfig. Однако я не могу построить FontConfig без первого построения HarfBuzz!

Я не знаю, как решить эту зависимость. Может быть, я могу отключить помощника Каира при создании HarfBuzz, использовать результирующую библиотеку для создания FontConfig, а затем перестроить HarfBuzz с результирующим FontConfig и затем перестроить FontConfig? Все это кажется большой неприятностью.

Я строю с MinGW и Windows DLL не любят неразрешенные символы, поэтому я не думаю, что могу разрешить это с помощью разделяемых библиотек. Я не совсем уверен, почему мне нужно HarfBuzz при связывании FontConfig - может быть, он пытается построить DLL :(

Любые идеи, как решить эту проблему без потери важной функциональности

ответ

1

Существует также циклическая зависимость между FreeType и HarfBuzz

Обратите внимание, что FontConfig и Cario нужны только для испытаний и инструментов, построенных с HarfBuzz и, таким образом, появляется безопасно настроить их:.

1) построить Freetype с помощью:

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

2) Построить HarfBuzz с помощью:

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

3) Построить Freetype с помощью:

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

4) Построить FontConfig.

5) Постройте Каир.

Не полностью протестирован, но должен работать.

0

Я недавно был в сценарии harfbuzz. Я написал и собрал некоторый базовый пример harfbuzz. Сценарии полагаются на freetype2, harfbuzz и cairo. Адрес link. Чтобы запустить их, просто введите python3 filename.py

Смежные вопросы