Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Кросс-компиляция для iOS на Linux
Процедура для этого довольно сложная и требует множества шагов, но как только вы правильно настроите среду, вы сможете скомпилировать Godot для iOS в любое время.
Отказ от ответственности
Хотя компиляция для iOS в среде Linux возможна, Apple накладывает очень строгие ограничения на используемые инструменты (особенно в плане оборудования), позволяя использовать для разработки практически только свои продукты. Так что это неофициально. Однако в 2010 году Apple заявила, что смягчила некоторые правила проверки в App Store, разрешив использование любых инструментов, при условии, что полученный двоичный файл не загружает никакого кода. Это означает, что можно использовать описанную здесь процедуру и кросс-компилировать двоичный файл.
Требования
XCode с iOS SDK (для загрузки Xcode необходимо войти в учетную запись Apple ID).
Clang >= 3.5 для вашей машины разработки установлен и прописан в
PATH. Для архитектурыarm64версия должна быть >= 3.5.xar и pbzx (требуются для извлечения архива
.xip, входящего в комплект Xcode).Для сборки xar и pbzx вы можете следовать этому руководству.
cctools-port для необходимых инструментов сборки. Процедура сборки довольно необычна и описана ниже.
Также есть некоторые дополнительные зависимости: automake, autogen, libtool.
Настройка среды
Подготовка SDK
Извлеките файл Xcode .xip, загруженный с сайта разработчиков Apple:
mkdir xcode
xar -xf /path/to/Xcode_X.x.xip -C xcode
pbzx -n Content | cpio -i
[...]
######### Blocks
Обратите внимание, что в приведенных ниже командах вам нужно заменить версию (x.x) на используемую вами версию iOS SDK. Если вы не знаете версию вашего iPhone SDK, вы можете найти JSON-файл в папке Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.
Распакуйте IOS SDK:
export IOS_SDK_VERSION="x.x"
mkdir -p iPhoneSDK/iPhoneOS${IOS_SDK_VERSION}.sdk
cp -r xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/* iPhoneSDK/iPhoneOS${IOS_SDK_VERSION}.sdk
cp -r xcode/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/* iPhoneSDK/iPhoneOS${IOS_SDK_VERSION}.sdk/usr/include/c++
fusermount -u xcode
Упакуйте SDK, чтобы cctools мог его использовать:
cd iPhoneSDK
tar -cf - * | xz -9 -c - > iPhoneOS${IOS_SDK_VERSION}.sdk.tar.xz
Инструментарий
Соберите cctools:
git clone https://github.com/tpoechtrager/cctools-port.git
cd cctools-port/usage_examples/ios_toolchain
./build.sh /path/iPhoneOS${IOS_SDK_VERSION}.sdk.tar.xz arm64
Скопируйте инструменты в более удобное место. Обратите внимание, что скрипты SCons для сборки будут искать их в usr/bin внутри каталога, который вы указали для исполняемых файлов набора инструментов, поэтому вам необходимо скопировать их в этот подкаталог, аналогично следующим командам:
mkdir -p "$HOME/iostoolchain/usr"
cp -r target/bin "$HOME/iostoolchain/usr/"
Теперь у вас должны быть двоичные файлы iOS toolchain в $HOME/iostoolchain/usr/bin.
Компиляция Godot для iPhone
После выполнения вышеперечисленных шагов вам необходимо сохранить в своей среде два элемента: собранный набор инструментов и каталог iPhoneOS SDK. Они могут располагаться где угодно, поскольку вам необходимо указать пути к ним в команде сборки SCons.
Для определения платформы iPhone необходимо, чтобы переменная среды OSXCROSS_IOS была определена как что-то конкретное.
export OSXCROSS_IOS="anything"
Теперь вы можете выполнить компиляцию для iPhone с использованием SCons, как стандартным способом Godot, с некоторыми дополнительными аргументами для указания правильных путей:
scons platform=ios arch=arm64 target=template_release IOS_SDK_PATH="/path/to/iPhoneSDK" IOS_TOOLCHAIN_PATH="/path/to/iostoolchain" ios_triple="arm-apple-darwin11-"