Pull to refresh

Comments 21

Вот это совпадение! Только вчера под Android собирал, и в это время мой друг в Стиме тоже собирал :D
Разве -DFT2_BUILD_LIBRARY не надо?
Не, не надо.
Оно уже прописано в makefile:
# Note what we also define the macro FT2_BUILD_LIBRARY when building
# FreeType. This is required to let our sources include the internal
# headers (something forbidden by clients).

Про сборку под Андроид я не стал писать ничего, потому что это уже раписано достаточно подробно.
А вот про использование clang почему-то в основном молчат. Видимо из-за того, что gcc совсем недавно выпилили.
Плохо искали. github.com/PaulWagener/mapnik-ios-framework Тут собирают растровый рендер (mapnik) и freetype не самая сложная из зависимостей. :)

Мне очень понравился подход и организация Makefile, так что на основе их подхода я организовал сборку всех своих внешних зависимостей. Среди всего прочего там есть пример как надо собирать libicu, которая может понадобится для нормальной работы с арабскими символами.
Не совсем понимаю, как мне надо было формировать запросы в гугле, чтобы в итоге выйти на этот фреймворк.
Я и сам не помню как его нашел. Видимо в каком-то из похожих обсуждений кросскомпиляции под iOS на stackoverflow.
Не так давно пришло понимание, что не о чем писать вообще. :)
Потому что практически про любую ситуацию можно сказать: решение уже есть в интернете.
Я сам же его как-то нашел или пришел к нему самостоятельно, а значит и другие смогут найти.
Здесь же причиной написать стало то, что решение не гуглится с очевидных запросов.
А параметры для configure не все могут подобрать самостоятельно.
Я совсем не против этого поста. Это обмен опытом. Так и я чтобы не создавать новый пост, решил написать в комментарии, о тонкостях с которыми пришлось не так давно разобраться.
Еще важный момент у кросскомпиляции — заголовочные файлы, которые генерятся под текущую платформу при помощи ./configure Опасно может быть использовать одни и те же заголовочные файлы для всех архитектур при сборке проекта. Т.к. с добавлением amd64 могут быть проблемы с внутренними типами библиотек. Решение в следующем:
1. Собирать библиотеки с --prefix=build/$arch, как это делает вышеуказанный Makefile, так чтобы в папке build были доступны все h файлы для каждой из архитектур.
2. Потом прописать в User Header Search File что-то вроде следующей строки: "$(SRCROOT)/../libs/build/$(arch)/include". Так во время сборки каждой из архитектур приложения Xcode будет использовать правильные версии h файлов.
Насколько я могу судить в случае с FreeType это не актуально, т.к. все типы жестко прописаны и не меняются в разных архитектурах.
Спасибо, воспользовался!

Кстати, в строчке конфигурации для armv7s — LDFLAGS="-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -miphoneos-version-min=4.2", а должно быть 5.0, не?
AllexIn, а вам не сложно было бы это оформить в виде .sh скрипта?
А нечего оформлять. Просто берете все вставки кода из заметки, объединяете в одну портянку — вот вам и готовый скрипт.
Нет особого смысла. Я набирал ручками, заодно проверяя пути. У меня например не стоит 7.1 SDK, зато есть 7.0.
Из тех же соображений не запускаю все команды за раз. Каждый шаг проверяю что все нормально отработало.
Я вас услышал. Будет свободная минутка — соберу и проверю скрипт.
Было бы неплохо в статье указать коротко — что такое freetype и зачем он нужен
Заметка нацелена в первую очередь на тех, кто убдет искать способы собрать freetype. То есть на тех, кто уже знает что это такое.
Делать обзор в заметке особого смысла нет — freetype уже подробно разобран, в том числе и на хабре.
Пока собирал, получилось вот. На скорую руку, зато проще управлять. Цель для сборки определяется параметром [all|i386|x86_64|arm7|arm7s|arm64|universal]. Исправил возможную проблему с ranlib для arm64. Можно брать и пользоваться (или исправлять этот ужас)
Sign up to leave a comment.

Articles

Change theme settings