Cross-Compiling für iOS unter Linux
Das Verfahren hierfür ist etwas komplex und erfordert viele Schritte, aber sobald Sie die Umgebung richtig konfiguriert haben, können Sie Godot für iOS jederzeit kompilieren.
Wichtiger Hinweis
Es ist zwar möglich, für iOS in einer Linux-Umgebung zu kompilieren, aber Apple ist sehr restriktiv, was die zu verwendenden Tools angeht (vor allem in Bezug auf die Hardware), und lässt so gut wie nur seine Produkte für die Entwicklung zu. Diese Vorgehensweise ist also nicht offiziell. Allerdings sagte Apple 2010, dass sie einige der App Store Review Guidelines gelockert haben, so dass jedes Tool verwendet werden kann, solange die resultierende Binärdatei keinen Code herunterlädt, was bedeutet, dass es OK sein sollte, das hier beschriebene Verfahren zu verwenden und die Binärdatei zu kompilieren.
Anforderungen
Xcode mit dem iOS-SDK (Sie müssen mit einer Apple-ID angemeldet sein, um Xcode herunterzuladen).
Clang >= 3.5 für Ihren Entwicklungsrechner installiert und im
PATHreferenziert. Für diearm64-Architektur als Target muss es Version >= 3.5 sein.xar und pbzx (erforderlich, um das
.xip-Archiv zu extrahieren, in dem Xcode vorliegt).Zum Erstellen von xar und pbzx möchten Sie möglicherweise dieser Anleitung folgen.
cctools-port für die benötigten Build-Tools. Das Verfahren zur Erstellung ist recht speziell und wird im Folgenden beschrieben.
Dies hat auch einige zusätzliche Abhängigkeiten: automake, autogen, libtool.
Die Umgebung konfigurieren
Vorbereiten des SDK
Extrahieren Sie die Xcode-Datei .xip, die Sie von der Entwickler-Website von Apple heruntergeladen haben:
mkdir xcode
xar -xf /path/to/Xcode_X.x.xip -C xcode
pbzx -n Content | cpio -i
[...]
######### Blocks
Beachten Sie, dass Sie für die folgenden Befehle die Version (x.x) durch die von Ihnen verwendete iOS SDK-Version ersetzen müssen. Wenn Sie Ihre iPhone SDK-Version nicht kennen, können Sie die JSON-Datei unter Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs sehen.
Extrahieren Sie das 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
Packen Sie das SDK, damit CCTools es verwenden kann:
cd iPhoneSDK
tar -cf - * | xz -9 -c - > iPhoneOS${IOS_SDK_VERSION}.sdk.tar.xz
Toolchain
Bauen Sie 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
Kopieren Sie die Tools an einen schöneren Ort. Beachten Sie, dass die SCons-Skripte zum Bauen unter usr/bin innerhalb des Verzeichnisses suchen, das Sie für die Toolchain-Binärdateien zur Verfügung stellen, also müssen Sie in ein solches Unterverzeichnis kopieren, ähnlich wie bei den folgenden Befehlen:
mkdir -p "$HOME/iostoolchain/usr"
cp -r target/bin "$HOME/iostoolchain/usr/"
Jetzt sollten Sie die Binärdateien der iOS-Toolchain in $HOME/iostoolchain/usr/bin haben.
Godot für iPhone kompilieren
Sobald Sie die oben genannten Schritte ausgeführt haben, sollten Sie zwei Dinge in Ihrer Umgebung behalten: Die erstellte Toolchain und das iPhoneOS SDK-Verzeichnis. Diese können überall bleiben, da Sie ihre Pfade zum SCons-Build-Befehl angeben müssen.
Damit die iPhone-Plattform erkannt werden kann, muss die Umgebungsvariable OSXCROSS_IOS als "anything" definiert sein.
export OSXCROSS_IOS="anything"
Jetzt können Sie mit SCons für das iPhone nach der Standard-Godot-Vorgehensweise kompilieren, mit einigen zusätzlichen Argumenten, um die richtigen Pfade anzugeben:
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-"