建筑系统简介

SCons

Godot使用 SCons 建造。我们爱它,我们不会为了其他任何事情而改变它。我们甚至不确定其他的构建系统是否能胜任构建Godot的任务。我们经常收到将构建系统移动到cmake或Visual Studio的请求,但这不会发生。我们选择SCons胜过其他替代品的原因有很多,例如:

  • Godot可以编译为十几个不同的平台:所有PC平台、所有移动平台、许多控制台和WebAssembly。

  • 开发人员通常需要为几个平台编译 同时 或同一平台的不同目标。他们负担不起每次重新配置和重建项目的费用。烤饼可以做到这一点,不需要流汗,也不会破坏结构。

  • 烤饼会 从未 无论有多少更改、配置、添加、删除等,都可以中断一个构建。与需要在scons中清理和重建相比,您有更多的机会被闪电击中而死亡。

  • Godot构建过程并不简单。一些文件是由代码(绑定器)生成的,其他文件是解析的(着色器),其他文件需要提供定制(插件)。这需要复杂的逻辑,用实际的编程语言(如python)来编写要比用主要基于宏的语言来构建要容易得多。

  • godot构建过程大量使用了交叉编译工具。每个平台都有一个特定的检测过程,所有这些都必须作为特定的案例处理,并为每个平台编写特殊的代码。

所以,如果你打算自己建造Godot的话,请试着保持一个开放的心态,并且至少熟悉一下它。

安装程序

请参考文档 为Android编译为iOS编译为MacOS编译通用Windows平台编译为Web编译为Windows编译为x11编译(Linux, * BSD) .

请注意 Windows/Visual Studio ,您需要使用 x86_x64 Cross Tools Command Prompt for VS 2017 或者类似的,取决于您的安装,而不是标准的Windows命令提示输入下面的命令。

平台选择

Godot的构建系统将首先检测它可以为之构建的平台。如果没有检测到,平台将不会出现在可用平台列表中。本教程的其余部分将描述每个平台的构建要求。

通过调用 scons . 如果没有指定平台,SCOS将根据主机平台自动检测目标平台。然后它将立即开始为目标平台构建。

要列出可用的目标平台,请使用 scons platform=list ::

user@host:~/godot$ scons platform=list
scons: Reading SConscript files ...
The following platforms are available:

    android
    javascript
    server
    windows
    x11

Please run SCons again and select a valid platform: platform=<string>

要为平台(例如,x11)构建,请使用 platform= (或) p= 简短地说)论点:

user@host:~/godot$ scons platform=x11

这将启动生成过程,这需要一段时间。如果您希望scons构建更快,请使用 -j <cores> 参数来指定将用于生成的核心数。或者把它放在一个核心上,这样你就可以用你的电脑做其他的事情了:)

使用4核的示例:

user@host:~/godot$ scons platform=x11 -j 4

结果二进制

生成的二进制文件将放置在 bin/ 子目录,通常具有以下命名约定:

godot.<platform>.[opt].[tools/debug].<architecture>[extension]

对于上一次生成尝试,结果如下:

user@host:~/godot$ ls bin
bin/godot.x11.tools.64

这意味着二进制文件是针对x11的,没有进行优化,编译了工具(整个编辑器),并且是针对64位的。

具有相同配置的Windows二进制文件如下所示:

C:\godot> dir bin/
godot.windows.tools.64.exe

将这个二进制文件复制到您喜欢的任何位置,因为它包含项目经理、编辑器和执行游戏的所有方法。但是,它缺少将其导出到不同平台的数据。为此,需要导出模板(可从 godotengine.org 或者你可以自己建造它们)。

除此之外,在所有构建目标中都可以设置一些标准选项,下面将解释这些选项。

工具

默认情况下,所有PC目标(Linux、Windows、MacOS)中的工具都是启用的,其他所有目标都是禁用的。禁用工具会生成一个可以运行项目但不包括编辑器或项目管理器的二进制文件。

scons platform=<platform> tools=yes/no

靶标

目标控制优化和调试标志。每种模式意味着:

  • 调试 :用C++调试符号、运行时检查(执行检查和报告错误)和无需优化。

  • release_debug :没有C++调试符号和优化的构建,但保持运行时检查(执行检查和报告错误)。官方编辑器二进制文件使用此配置。

  • 释放 :不使用符号、优化和很少到没有运行时检查进行生成。这个目标不能与 tools=yes 因为编辑器需要一些调试功能和运行时检查才能运行。

scons platform=<platform> target=debug/release_debug/release

此标志附加 .debug 后缀(用于调试),或 .tools (用于启用工具的调试)。当启用优化(释放)时,它附加 .opt 后缀。

位用于控制运行二进制文件的CPU或OS版本。它主要集中在桌面平台上,而忽略了其他任何地方。

  • 32 :为32位平台生成二进制文件。

  • 64 :为64位平台生成二进制文件。

  • 违约 :为与主机平台匹配的体系结构生成。

scons platform=<platform> bits=default/32/64

此标志附加 .32.64 相关时对生成的二进制文件进行后缀。如果 bits=default 如果使用,后缀将与检测到的体系结构匹配。

其他生成选项

您可以使用其他几个构建选项来配置godot的构建方式(编译器、调试选项等)以及要包含/禁用的功能。

检查的输出 scons --help 有关您愿意编译的版本的每个选项的详细信息。

导出模板

官方导出模板从godot引擎网站下载: godotengine.org . 但是,您可能希望自己构建它们(如果您想要更新的模块,您正在使用自定义模块,或者只是不信任自己的影子)。

如果下载并解压缩官方导出模板包,您会注意到大多数文件都是针对每个平台的优化二进制文件或包:

android_debug.apk
android_release.apk
javascript_debug.zip
javascript_release.zip
linux_server_32
linux_server_64
linux_x11_32_debug
linux_x11_32_release
linux_x11_64_debug
linux_x11_64_release
osx.zip
version.txt
windows_32_debug.exe
windows_32_release.exe
windows_64_debug.exe
windows_64_release.exe

要自己创建这些平台,请遵循本教程部分中每个平台的详细说明。每个平台解释如何创建自己的模板。

这个 version.txt file should contain the corresponding Godot version identifier. This file is used to install export templates in a version-specific directory to avoid conflicts. For instance, if you are building export templates for Godot 3.1.1, version.txt should contain 3.1.1.stable on the first line (and nothing else). This version identifier is based on the major, minor, patch (if present) and status lines of the version.py file in the Godot Git repository .

如果您是为多个平台开发的,那么MacOS绝对是交叉编译最方便的主机平台,因为您可以交叉编译几乎每个目标(UWP除外)。Linux和Windows排在第二位,但Linux的优势在于它更容易建立这个平台。