Введение в систему сборки

SCons

Godot использует SCons для сборки. Мы любим его, и мы не намерены изменять его на что-то другое. Мы даже не уверены что другие системы сборки вообще могут осуществить задачу по сборке Godot. Мы постоянно получаем запросы на изменение системы сборки на CMake, или Visual Studio, но это не произойдёт. Существуют много причин по которым мы выбрали SCons из всех возможных например:

  • Godot can be compiled for a dozen different platforms: all PC platforms, all mobile platforms, many consoles, and WebAssembly.
  • Разработчикам часто нужно компилировать для множества платформ в одно и то же время, или даже разных целей на одной платформе. Они не хотят перенастраивать и перестраивать проект каждый раз. SCons позволяет сделать это без лишней головной боли, без ломания сборок.
  • SCons никогда не сломает сборку вне зависимости от количества изменений, конфигураций, дополнений, удалений итд. Вы имеете больше шансов умереть от попадания молнии чем нужды в очистке и перестройке SCons.
  • Процесс сборки Godot не прост. Множество файлов созданы в коде(связующие(binders)), другие прошли через парсинг (шейдеры), а другие нуждаются в тонкой настройке (плагины). Всё это требует сложной логики которая может бы легко написана на подходящем языке программирования (например Python) чем использовать язык с макросами нужным только для сборки.
  • Godot build process makes heavy use of cross-compiling tools. Each platform has a specific detection process, and all these must be handled as specific cases with special code written for each.

Так что, пожалуйста имейте это ввиду и постарайтесь изучить это лучше если вы хотите собирать Godot самостоятельно.

Setup

Пожалуйста изучите документацию для Compiling for Android, Compiling for iOS, Compiling for macOS, Compiling for Universal Windows Platform, Compiling for the Web, Компиляция под Windows и Compiling for X11 (Linux, *BSD).

Заметьте что для Windows/Visual Studio, вам нужно использовать x86_x64 Cross Tools Command Prompt for VS 2017 или похожий, зависит от ваших установок, вместо стандартной командного терминала Windows для ввода команд ниже.

Выбор платформы

Сборка Godot начнется с обнаружения платформ на которых она может собраться. Если требуемая платформа не обнаружится она просто не появится в списке доступных платформ. Требования сборки для каждой из платформ будут описаны в оставшейся части руководства.

SCons is invoked by just calling scons. If no platform is specified, SCons will detect the target platform automatically based on the host platform. It will then start building for the target platform right away.

To list the available target platforms, use scons platform=list:

[email protected]:~/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>

To build for a platform (for example, x11), run with the platform= (or p= to make it short) argument:

[email protected]:~/godot$ scons platform=x11

This will start the build process, which will take a while. If you want SCons to build faster, use the -j <cores> parameter to specify how many cores will be used for the build. Or leave it using one core, so you can use your computer for something else :)

Например для использования 4 ядер:

[email protected]:~/godot$ scons platform=x11 -j 4

Полученный бинарный файл

The resulting binaries will be placed in the bin/ subdirectory, generally with this naming convention:

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

For the previous build attempt, the result would look like this:

[email protected]:~/godot$ ls bin
bin/godot.x11.tools.64

Это означает что бинарный файл для X11, если не оптимизирован, имеет инструменты (целый редактор) скомпилированный с ним, и нацелен на 64 битную платформу.

A Windows binary with the same configuration will look like this:

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

Copy that binary to any location you like, as it contains the project manager, editor and all means to execute the game. However, it lacks the data to export it to the different platforms. For that the export templates are needed (which can be either downloaded from godotengine.org, or you can build them yourself).

Помимо этого, есть несколько стандартных параметров для установки во всех целях сборки, и которые будут описаны ниже.

Инструменты

Инструменты(Tools) включены по умолчанию для всех ПК целей (Linux, Windows, macOS), но отключены для всего остального. Отключение инструментов создаёт бинарный файл который годится для запуска проектов но не включает в себя редактор или менеджер проектов.

scons platform=<platform> tools=yes/no

Цель

Цель контролирует оптимизации и флаги отладки. Каждый режим означает:

  • debug: Сборка с символами отладки C++, включенными проверками во время выполнения (выполняет проверки и сообщает об ошибках) и без оптимизации.
  • release_debug: Build without C++ debugging symbols and optimization, but keep the runtime checks (performs checks and reports errors). Official editor binaries use this configuration.
  • release: Build without symbols, with optimization and with little to no runtime checks. This target can’t be used together with tools=yes, as the editor requires some debug functionality and run-time checks to run.
scons platform=<platform> target=debug/release_debug/release

This flag appends the .debug suffix (for debug), or .tools (for debug with tools enabled). When optimization is enabled (release), it appends the .opt suffix.

Биты

Биты нужны для контроля версии CPU или OS необходимые для запуска исполняемых файлов. Они сделаны преимущественно для десктопных платформ и игнорируются где-то ещё.

  • 32: Build binaries for 32-bit platforms.
  • 64: Build binaries for 64-bit platforms.
  • default: Build for the architecture that matches the host platform.
scons platform=<platform> bits=default/32/64

This flag appends .32 or .64 suffixes to resulting binaries when relevant. If bits=default is used, the suffix will match the detected architecture.

Другие параметры сборки

Существуют несколько других параметров сборки которые вы можете использовать для настройки способа сборки Godot (компилятор, опции отладки, итд.) также как и возможности для включения/выключения.

Посмотрите вывод scons --help для подробностей по этим командам для версии которую вы хотите скомпилировать.

Экспорт шаблонов

Официальные шаблоны экспорта загружаются с официального сайта Godot: godotengine.org. Однако, вы можете захотеть собрать их самостоятельно (в случае если вы хотите более свежих, или вы хотите подключить свои модули, или просто не доверяете собственной тени).

If you download the official export templates package and unzip it, you will notice that most files are optimized binaries or packages for each platform:

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

To create those yourself, follow the instructions detailed for each platform in this same tutorial section. Each platform explains how to create its own template.

The 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.

If you are developing for multiple platforms, macOS is definitely the most convenient host platform for cross-compilation, since you can cross-compile for almost every target (except for UWP). Linux and Windows come in second place, but Linux has the advantage of being the easier platform to set this up.