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.

Крос-компіляція для iOS на Linux

Процедура для цього є дещо складною та вимагає багатьох кроків, але як тільки ви правильно налаштуєте середовище, ви зможете скомпілювати Godot для iOS будь-коли.

Достовірність

Хоча компіляція для iOS у середовищі Linux можлива, Apple дуже обмежує інструменти, які потрібно використовувати (особливо щодо апаратного забезпечення), дозволяючи для розробки використовувати майже лише свої продукти. Отже, це не офіційно. Однак у 2010 році Apple заявила, що пом’якшила деякі інструкції щодо перевірки App Store, дозволивши використовувати будь-який інструмент, якщо отриманий двійковий файл не завантажує жодного коду, що означає, що можна використовувати описану тут процедуру та крос-компіляцію двійкового файлу.

Вимоги

  • XCode з iOS SDK (щоб завантажити Xcode, потрібно ввійти в обліковий запис Apple ID).

  • Clang >= 3.5 для вашої машини розробки встановлено та в PATH. Це має бути версія >= 3.5 для цільової архітектури arm64.

  • xar і pbzx (потрібно для розпакування архіву .xip Xcode поставляється в).

  • 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, яку ви використовуєте. Якщо ви не знаєте свою версію SDK для iPhone, ви можете переглянути файл 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 у $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-"