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...
Cross-compilazione per iOS su Linux
La procedura per questo è un po' complessa e richiede molti passaggi, ma una volta configurato correttamente l'ambiente è possibile compilare Godot per iOS in qualsiasi momento.
Avvertenza
Sebbene sia possibile compilare per iOS in un ambiente Linux, Apple è molto restrittiva riguardo agli strumenti da utilizzare (soprattutto in termini di hardware), consentendo praticamente solo l'utilizzo dei propri prodotti per lo sviluppo. Quindi, questo non è ufficiale. Tuttavia, nel 2010 Apple ha dichiarato di aver rilassato alcune delle linee guida per la revisione dell'App Store per consentire l'utilizzo di qualsiasi strumento, purché il binario risultante non scarichi codice, il che significa che dovrebbe essere concesso utilizzare la procedura descritta qui e cross-compilare il binario.
Requisiti
XCode con l'SDK iOS (è necessario aver effettuato l'accesso con un ID Apple per scaricare Xcode).
Clang >= 3.5 per la propria macchina di sviluppo installata e nel percorso
PATH. Deve essere una versione >= 3.5 per un'architetturaarm64.xar e pbzx (necessari per estrarre l'archivio
.xipin cui si trova Xcode).Per compilare xar e pbzx, si potrebbe seguire questa guida.
cctools-port per gli strumenti di compilazione necessari. La procedura di compilazione è piuttosto particolare ed è descritta di seguito.
Ciò presenta anche alcune dipendenze aggiuntive: automake, autogen, libtool.
Configurare l'ambiente
Preparare l'SDK
Estrarre il file Xcode .xip scaricato dal sito web degli sviluppatori Apple:
mkdir xcode
xar -xf /path/to/Xcode_X.x.xip -C xcode
pbzx -n Content | cpio -i
[...]
######### Blocks
Si noti che per i comandi seguenti si dovrà sostituire la versione (x.x) con la versione dell'SDK iOS che si sta utilizzando. Se non si conosce la versione dell'SDK del tuo iPhone, si può vedere il file JSON all'interno di Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.
Estrarre l'SDK iOS:
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
Comprimere l'SDK in modo che cctools possa utilizzarlo:
cd iPhoneSDK
tar -cf - * | xz -9 -c - > iPhoneOS${IOS_SDK_VERSION}.sdk.tar.xz
Toolchain
Compilare 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
Copia gli strumenti in un posto più comodo. Nota che gli script di compilazione di SCons cercheranno in usr/bin all'interno della cartella specificata per i binari della toolchain, quindi è necessario copiare in tale sottocartella, in modo simile ai seguenti comandi:
mkdir -p "$HOME/iostoolchain/usr"
cp -r target/bin "$HOME/iostoolchain/usr/"
Ora si dovrebbero avere i binari della toolchain iOS in $HOME/iostoolchain/usr/bin.
Compilare Godot per iPhone
Una volta completati i passaggi precedenti, si dovrebbero mantenere due cose nel proprio ambiente: la toolchain compilata e la cartella dell'SDK di iPhoneOS. Questi possono rimanere dove si vuole, dato che bisogna fornire i loro percorsi al comando di build di SCons.
Per far si che la piattaforma iPhone sia rilevata, è necessario che la variabile d'ambiente OSXCROSS_IOS sia definita su qualsiasi valore.
export OSXCROSS_IOS="anything"
Ora è possibile compilare per iPhone utilizzando SCons come nella maniera standard di Godot, con alcuni argomenti aggiuntivi per fornire i percorsi corretti:
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-"