Компиляция Freetype 2.6.5 Xcode для IOS

Хорошо, ребята, я разместил аналогичный вопрос и удалил его, потому что он не был достаточно конкретным, поэтому я иду. Из zip-файла Freetype 2.6.5 мне не удалось создать Xcode проект, который будет компилировать библиотеку для использования iOS, только для i386_64.

Я попробовал команды здесь, но я не прошел первые команды и я получаю это

Система сборки FreeType -- автоматическое определение системы

Используются следующие настройки:

платформа компилятор Unix cc
каталог конфигурации ./builds/unix правила конфигурации
./builds/unix/unix.mk

Если это не соответствует вашей системе или настройкам, удалите файл `config.mk' из этого каталога, а затем прочтите файл INSTALL для помощи.

В противном случае просто введите /Applications/Xcode.app/Contents/Developer/usr/bin/make' again to build the library, or /Applications/Xcode.app/Contents/Developer/usr/bin/make refdoc', чтобы создать ссылку на API (для этого требуется python >= 2.6).

cd сборки/unix; \ ./configure 'CFLAGS=-arch i386' /bin/sh: ./configure: Нет такого файла или каталога make: *** [setup] Ошибка 127

Я также следовал инструкциям внутри cmakelists.txt, которые входят в проект, но все равно ничего, я все еще получаю проект xcode для OSX, а не для IOS, что дает мне множество ошибок связывания. Вот инструкции для справки.

Для статической библиотеки iOS используйте #

cmake -D IOS_PLATFORM=ОС -G Xcode

#

or

#

cmake -D IOS_PLATFORM=SIMULATOR -G Xcode

Я не уверен, что еще делать. Любая помощь?


person Miguel    schedule 15.07.2016    source источник
comment
Возможно, поможет найденный здесь скрипт оболочки. Единственная причина, по которой я предлагаю это, заключается в том, что в вашем связанном вопросе есть комментарий к этому ответу, в котором говорится, что использование этого сценария оболочки было единственным рабочим решением по состоянию на сентябрь 2015 года   -  person iRove    schedule 16.07.2016
comment
@ iRove108: К сожалению, этот скрипт не будет работать как есть, поскольку с тех пор цепочка инструментов изменила местоположение. Я выложу обновленную версию, хотя в ближайшее время ...   -  person l'L'l    schedule 16.07.2016
comment
@l'L'l: я рад, что кто-то помогает. Я предложил это только потому, что нашел его в вопросе, связанном с ОП, хотя на самом деле я никогда не компилировал FreeType для IOS :). Я подумал, что это может быть полезно, если ОП не увидит ответ внизу списка на связанный вопрос.   -  person iRove    schedule 16.07.2016
comment
@iRove108: Я не могу не согласиться; сценарий хорошо работал в прошлом и определенно экономит много времени.   -  person l'L'l    schedule 16.07.2016
comment
Вот модифицированный скрипт сборки, который будет компилировать библиотеки FreeType для iOS. Для использования просто вызовите ./build_freetype.sh в Терминале.   -  person l'L'l    schedule 16.07.2016
comment
@l'L'l: я очень ценю усилия. Опубликуйте его, и я выберу ваш ответ... Пожалуйста, опубликуйте некоторые подробности, чтобы я получил больше информации, так как я очень новичок в разработке IOS.   -  person Miguel    schedule 16.07.2016
comment
Конечно, не проблема... Может быть, немного, я голоден! :D Дайте мне знать, как работает скрипт.   -  person l'L'l    schedule 16.07.2016
comment
ТЫ ДУМАЕШЬ МЕНЯ!!! БРО....ТЫ ЗА ГРАНИЦАМИ! ПРЕКРАСНАЯ РАБОТА! Я провел последние 24 часа, ломая себе голову над этой проблемой ... Вы только что показали мне, что мне действительно нужно ознакомиться с тем, как делается разработка в Unix, например, в ОС (черт возьми, Visual Studio! Вы меня избаловали!). Пожалуйста, опубликуйте официальный ответ и попытайтесь дать некоторое представление о том, почему и как это работает, и это БУДЕТ выбрано в качестве ответа. Еще раз, БОЛЬШАЯ ЧЕРТОВАЯ РАБОТА!   -  person Miguel    schedule 16.07.2016
comment
@l'L'l: я думаю, это сработало (см. комментарий Мигеля;).   -  person iRove    schedule 16.07.2016


Ответы (1)


Вот схема основного процесса сборки для компиляции библиотек FreeType для iOS:

  1. Загрузите последний исходный код FreeType.
  2. Распакуйте архив и перейдите в неархивированный каталог
  3. Настройте набор инструментов и экспортируйте переменные для желаемых архитектур (arm64, arm7, i386, x86_64)
  4. Скомпилируйте исходный код и соберите библиотеки

Например, команды сборки для arm64 могут выглядеть примерно так:

$ export CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
$ iphoneos="7.0" # target version of iOS 
$ ARCH="arm64" # architecture (arm64, arm7, i386, x86_64)
$ export CFLAGS="-arch ${ARCH} -pipe -mdynamic-no-pic -Wno-trigraphs -fpascal-strings \
-O2 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden \
-miphoneos-version-min=$iphoneos -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2 \
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk" 
$ export AR="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar"
$ export LDFLAGS="-arch ${ARCH} -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk \
-miphoneos-version-min=7.0"
$ ./configure --host="aarch64-apple-darwin" --enable-static=yes --enable-shared=no           
$ make     
$ clean

Создание команд для каждой арки требует немного усилий, но, к счастью, есть скрипт сборки, который автоматически загружает, извлекает и создает последнюю версию FreeType (в настоящее время 2.6.5).

Чтобы запустить скрипт, просто используйте следующую команду в Терминале:

./build_freetype.sh

Полученные библиотеки iOS можно будет найти в ~/Desktop/FreeType_iOS_Release после завершения.

person l'L'l    schedule 16.07.2016
comment
Этот ответ превзойдет время! Без сомнений! У меня есть соблазн подождать, пока я не смогу назначить награду за это, а затем дать вам награду!! - person Miguel; 16.07.2016
comment
Хе-хе. Ты слишком добрый (и очень смешной!). Я рад, что это помогло вам — это то, о чем это место :) - person l'L'l; 16.07.2016
comment
Сценарий сборки, упомянутый в ответе, несколько устарел по сравнению с текущими версиями iOS. Разветвлено содержание и соответствующим образом изменено для совместимости с iOS 8.2+, и это можно найти здесь. Надеюсь, кто-то может найти это полезным в будущем. - person Ayan Sengupta; 06.09.2017
comment
@AyanSengupta Спасибо - он создан с использованием Xcode 10 / iOS 12 SDK. Мне нужно обновить его, чтобы скомпилировать двоичные файлы tvOS. - person Jonny; 30.09.2018
comment
Привет! отличный ответ здесь! это компилируется в файл .a. Как вместо этого создать .frameworks? - person iori24; 03.06.2020
comment
@iori24 iori24 .framework - это просто структура папок с файлом .a, заголовками и списком - person Dan2552; 12.06.2020