为 iOS 平台编译

需求

  • SCons 3.0+(你可以通过 HomebrewMacPorts 安装它,安装后你应该可以在终端运行 scons )。

  • Xcode 10.0(或更高版本)以及iOS(10.0)SDK和命令行工具.

参见

有关 Godot 的 SCons 用法的一般概述,请参阅 构建系统介绍

编译

打开终端, 转到引擎源代码的根目录并键入:

  1. $ scons p=iphone target=debug

针对调试版本, 或:

  1. $ scons p=iphone target=release

对于发布版本(检查 platform/iphone/detect.py 以获取用于每种配置的编译器标志).

或者, 你可以运行

  1. $ scons p=iphone arch=x86_64 target=debug

用于模拟器可执行文件.

对于最新的设备, 当您上载到苹果商店时, 苹果要求64位版本的应用程序二进制文件. 提供这些功能的最好方法是创建一个包, 其中包含32位和64位二进制文件, 这样每个设备都可以运行游戏.

可以分三步完成: 首先编译32位版本, 再编译64位版本, 然后使用 lipo 命令将它们绑定到一个 “通用(universal)” 二进制文件中. 所有这些步骤都可以通过以下命令执行:

  1. $ scons p=iphone tools=no target=release arch=arm
  2. $ scons p=iphone tools=no target=release arch=arm64
  3. $ lipo -create bin/libgodot.iphone.opt.arm.a bin/libgodot.iphone.opt.arm64.a -output bin/libgodot.iphone.release.fat.a
  4. $ lipo -create bin/libgodot_camera_module.iphone.opt.arm.a bin/libgodot_camera_module.iphone.opt.arm64.a -output bin/libgodot_camera_module.iphone.release.fat.a
  5. $ lipo -create bin/libgodot_arkit_module.iphone.opt.arm.a bin/libgodot_arkit_module.iphone.opt.arm64.a -output bin/libgodot_arkit_module.iphone.release.fat.a

如果您还想提供一个模拟器构建(减少具有依赖项的任何链接器错误的机会), 您还需要构建和 lipo x86_64 体系结构.

  1. $ scons p=iphone tools=no target=release arch=arm
  2. $ scons p=iphone tools=no target=release arch=arm64
  3. $ scons p=iphone tools=no target=release arch=x86_64
  4. $ lipo -create bin/libgodot.iphone.opt.arm.a bin/libgodot.iphone.opt.arm64.a bin/libgodot.iphone.opt.x86_64.a -output bin/libgodot.iphone.release.fat.a
  5. $ lipo -create bin/libgodot_camera_module.iphone.opt.arm.a bin/libgodot_camera_module.iphone.opt.arm64.a bin/libgodot_camera_module.iphone.opt.x86_64.a -output bin/libgodot_camera_module.iphone.release.fat.a
  6. $ lipo -create bin/libgodot_arkit_module.iphone.opt.arm.a bin/libgodot_arkit_module.iphone.opt.arm64.a bin/libgodot_arkit_module.iphone.opt.x86_64.a -output bin/libgodot_arkit_module.iphone.release.fat.a

运行

要在设备或模拟器上运行, 请按照以下说明操作: 为 iOS 导出.

将你的可执行文件替换或添加到Xcode项目, 如果你使用替代版本, 则相应地更改Info.plist上的 可执行文件名称 属性.