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 diearm64
-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-"