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

SCons

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

  • Godot может быть скомпилирован для множества различных платформ. Все ПК платформы, все мобильные платформы, множество консолей, и множество веб-платформ (такие как HTML5 и Chrome PNACL).
  • Разработчикам часто нужно компилировать для множества платформ в одно и то же время, или даже разных целей на одной платформе. Они не хотят перенастраивать и перестраивать проект каждый раз. SCons позволяет сделать это без лишней головной боли, без ломания сборок.
  • SCons никогда не сломает сборку вне зависимости от количества изменений, конфигураций, дополнений, удалений итд. Вы имеете больше шансов умереть от попадания молнии чем нужды в очистке и перестройке SCons.
  • Процесс сборки Godot не прост. Множество файлов созданы в коде(связующие(binders)), другие прошли через парсинг (шейдеры), а другие нуждаются в тонкой настройке (плагины). Всё это требует сложной логики которая может бы легко написана на подходящем языке программирования (например Python) чем использовать язык с макросами нужным только для сборки.
  • Процесс сборки Godot широко использует инструменты кросс-компиляции. Каждая платформа имеет специфический процесс обнаружения, и все они должны быть обработаны в специальном коде написанном для каждого.

Так что, пожалуйста имейте это ввиду и постарайтесь изучить это лучше если вы хотите собирать 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 вызывается простым вызовом scons.

Хотя, не произойдёт ничего кроме показа списка доступных платформ, например:

[email protected]:~/godot$ scons
scons: Reading SConscript files ...
No valid target platform selected.
The following were detected:
    android
    server
    javascript
    windows
    x11

Please run scons again with argument: platform=<string>
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
scons: done building targets.

Для сборки под платформу (например, x11), добавьте аргумент platform= (или просто p= для краткости):

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

Это запустит процесс сборки, который займёт время. Если вы хотите чтобы scons строил быстрее, используйте параметр -j <числ ядер> для определения как много ядер вашего процессора использовать при сборке. Или просто оставьте использовать одно ядро, зато вы сможете использовать компьютер для чего-то другого :)

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

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

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

Полученные исполняемые файлы помещаются в под-директорию bin/, и называются в соответствии с данными правилами наименования:

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

Для предыдущего примера сборки результат будет выглядеть так:

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

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

Бинарный файл для Windows с той же конфигурацией будет выглядеть так.

C:\GODOT> DIR BIN/
godot.windows.tools.64.exe

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

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

Инструменты

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

scons platform=<platform> tools=yes/no

Цель

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

  • debug: Сборка с символами отладки C++, включенными проверками во время выполнения (выполняет проверки и сообщает об ошибках) и без оптимизации.
  • release_debug: Сборка без символов отладки C++ и оптимизации, но сохраняет проверку во время выполнения (проверки и сообщения об ошибках). Официальные бинарные файлы используют эту конфигурацию.
  • release: Сборка без символов, с оптимизацией и практически без проверок времени выполнения. Эта цель не может быть использована с tools=yes, так как инструменты требуют некоторой отладочной функциональности и проверок во время выполнения.
scons platform=<platform> target=debug/release_debug/release

Этот флаг добавляет суффикс «.debug» (для отладки), или «.tools» (для отладки с включенными инструментами). Когда оптимизация включена (релиз) добавляется суффикс «.opt».

Биты

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

  • 32: Строит бинарные файлы для 32-битной платформы.
  • 64: Строит бинарные файлы для 64-битной платформы.
  • default: Отдаёт выбор на усмотрение системе сборки. На Linux это зависит от запускаемой платформы (если не кросс-компиляция), на Mac это 64-бит, а на Windows - 32-бит.
scons platform=<platform> bits=default/32/64

Когда необходимо этот флаг добавляет суффиксы «.32» или «.64» полученным бинарным файлам.

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

Существуют несколько других параметров сборки которые вы можете использовать для настройки способа сборки 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

Для создания собственных, просто следуйте инструкциями описанным для каждой платформы в соответствующем разделе документации. Для каждой платформы объясняется как создавать свой шаблон.

Если вы разрабатываете для нескольких платформ, macOS определённо самая удобная платформа сборки для кросс-компиляции, поскольку вы можете провести кросс-компиляцию почти для каждой цели (исключая UWP). Linux и Windows на втором месте, но Linux имеет преимущество в лёгкости установки этой системы.