Крос-компіляція для 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 (потрібно для розпакування архіву
.xipXcode поставляється в).Щоб створити 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, яку ви використовуєте. Якщо ви не знаєте свою версію 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
Збірка cctools:
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-"