Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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 (ein dmg-Image; für neuere Versionen wird eine xip-Datei heruntergeladen).

  • Clang >= 3.5 für Ihren Entwicklungsrechner installiert und im PATH referenziert. Für die arm64-Architektur als Target muss es Version >= 3.5 sein.

  • Fuse zum Mounten und Unmounten des dmg-Images.

  • darling-dmg, das aus den Quellen gebaut werden muss. Das Verfahren dafür wird weiter unten erklärt.

    • Für neuere Versionen sollten Sie xar und pbzx herunterladen.

    • Um darling-dmg zu erstellen, benötigen Sie die Entwicklungspakete der folgenden Bibliotheken: fuse, icu, openssl, zlib, bzip2.

    • Für das Bauen von xar und pbzx sollten Sie diese Anleitung befolgen.

  • 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

darling-dmg

Klonen Sie das Repository auf Ihrem Computer:

$ git clone https://github.com/darlinghq/darling-dmg.git

Bauen Sie es:

$ cd darling-dmg
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ make -j 4  # The number is the amount of cores your processor has, for faster build
$ cd ../..

Vorbereiten des SDK

Mounten Sie das XCode-Image:

$ mkdir xcode
$ ./darling-dmg/build/darling-dmg /path/to/Xcode_7.1.1.dmg xcode
[...]
Everything looks OK, disk mounted

Bei neueren Versionen sollten Sie die xip-Datei extrahieren:

$ mkdir xcode
$ xar -xf /path/to/Xcode_X.x.xip -C xcode
$ pbzx -n Content | cpio -i
[...]
######### Blocks

Beachten Sie, dass Sie bei den folgenden Befehlen die Version (X.x) durch die von Ihnen verwendete iOS SDK-Version ersetzen müssen.

Extrahieren Sie das iOS SDK:

$ # If you don't know your iPhone SDK version you can see the json file inside of Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
$ mkdir -p iPhoneSDK/iPhoneOSX.x.sdk
$ cp -r xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/* iPhoneSDK/iPhoneOSX.x.sdk
$ cp -r xcode/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/* iPhoneSDK/iPhoneOSX.x.sdk/usr/include/c++
$ fusermount -u xcode  # unmount the image

Packen Sie das SDK:

$ cd iPhoneSDK
$ tar -cf - * | xz -9 -c - > iPhoneOSX.x.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/iPhoneOSX.x.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/user/iostoolchain/usr
$ cp -r target/bin /home/user/iostoolchain/usr/

Jetzt sollten Sie die iOS-Toolchain-Binärdateien in /home/user/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 -j 4 platform=ios arch=arm64 target=template_release IOS_SDK_PATH="/path/to/iPhoneSDK" IOS_TOOLCHAIN_PATH="/path/to/iostoolchain" ios_triple="arm-apple-darwin11-"