Збірка під X11 (Linux, *BSD)¶
Дивись також
This page describes how to compile Linux editor and export template binaries from source. If you're looking to export your project to Linux instead, read Експорт на Linux.
Вимоги¶
Для того щоб зібрати проєкт під Linux чи який-небудь інший вид Unix системи, вам знадобляться:
GCC 7+ або Clang 6+.
Python 3.5+.
Система SCons 3.0+. Якщо ваша ОС за замовчуванням використовує Python 2, або ви користуєтесь версією SCons старшою 3.1.2, вам потрібно змінити версію Python, яку використовує SCons, замінивши шебанг (перший рядок коду) скрипту SCons на
#! /usr/bin/python3
. Використайте командуwhich scons
щоб дізнатись, де знаходиться файл скрипту SCons.pkg-config (потрібен щоб перевіряти наявність залежностей, перерахованих нижче).
Бібліотеки для розробки: X11, Xcursor, Xinerama, Xi та XRandR.
Бібліотека MesaGL.
Бібліотеки ALSA.
Бібліотеки для розробки з комплекту PulseAudio.
За бажанням - libudev (зберіть з параметром
udev=yes
).За бажанням - yasm (для оптимізації WebM SIMD).
Дивись також
To get the Godot source code for compiling, see Getting the source.
For a general overview of SCons usage for Godot, see Introduction to the buildsystem.
Команди для різних дистрибутивів¶
Alpine Linux |
apk add scons pkgconf gcc g++ libx11-dev libxcursor-dev libxinerama-dev libxi-dev libxrandr-dev \
mesa-dev libexecinfo-dev eudev-dev alsa-lib-dev pulseaudio-dev
|
Arch Linux |
pacman -S --needed scons pkgconf gcc libxcursor libxinerama libxi libxrandr mesa glu libglvnd \
alsa-lib pulseaudio yasm
|
Debian / Ubuntu |
sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev \
libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev yasm
|
Fedora |
sudo dnf install scons pkgconfig libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel \
libXi-devel mesa-libGL-devel mesa-libGLU-devel alsa-lib-devel pulseaudio-libs-devel \
libudev-devel yasm gcc-c++ libstdc++-static libatomic-static
|
FreeBSD |
sudo pkg install py37-scons pkgconf xorg-libraries libXcursor libXrandr libXi xorgproto libGLU \
alsa-lib pulseaudio yasm
|
Gentoo |
emerge -an dev-util/scons x11-libs/libX11 x11-libs/libXcursor x11-libs/libXinerama x11-libs/libXi \
media-libs/mesa media-libs/glu media-libs/alsa-lib media-sound/pulseaudio dev-lang/yasm
|
Mageia |
urpmi scons task-c++-devel pkgconfig "pkgconfig(alsa)" "pkgconfig(glu)" "pkgconfig(libpulse)" \
"pkgconfig(udev)" "pkgconfig(x11)" "pkgconfig(xcursor)" "pkgconfig(xinerama)" "pkgconfig(xi)" \
"pkgconfig(xrandr)" yasm
|
OpenBSD |
pkg_add python scons llvm yasm
|
openSUSE |
sudo zypper install scons pkgconfig libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel \
libXi-devel Mesa-libGL-devel alsa-devel libpulse-devel libudev-devel libGLU1 yasm
|
NetBSD |
pkg_add pkg-config py37-scons yasm
Для забезпечення підтримки звуку ви, якщо хочете, можете встановити |
Solus |
sudo eopkg install -c system.devel scons libxcursor-devel libxinerama-devel libxi-devel \
libxrandr-devel mesalib-devel libglu alsa-lib-devel pulseaudio-devel yasm
|
Компілювання¶
Відкрийте термінал, перейдіть до кореневої директорії проєкту та введіть:
scons -j8 platform=x11
Було б добре, якби для параметра -j
(jobs) було вказано не менше потоків компіляції Godot ніж ядер у вашого ЦП. Може навіть на один-два більше. Сміливо додавайте параметр -j
до будь-якої з команд SCons, описаних у цій статті.
Якщо все пройде успішно, кінцевий файл програми буде знаходитись в теці „bin“. Цей файл містить у собі весь рушій і запускається без всяких залежностей. Після його запуску ви побачите список проєктів.
Примітка
Якщо ж вам хочеться зібрати проєкт використовуючи Clang а не GCC, то використайте команду:
scons platform=x11 use_llvm=yes
На OpenBSD вам доведеться використовувати Clang, інакше ваша програма не побудується.
Примітка
If you are compiling Godot for production use, then you can
make the final executable smaller and faster by adding the
SCons option target=release_debug
.
Якщо ви збираєте Godot з GCC, ви можете зробити вихідний файл навіть меншим та швидшим, додавши до SCons опцію use_lto=yes
. Так як оптимізації в процесі збірки — це процес, який потребує багато машинної пам'яті. то вам для компіляції знадобиться близько 7 GB вільної оперативної пам'яті.
Примітка
If you want to use separate editor settings for your own Godot builds
and official releases, you can enable
Автономний режим by creating a file called
._sc_
or _sc_
in the bin/
folder.
Збірка для сервера/безголова збірка¶
Щоб зібрати безголову версію програми, яка дає можливість виробляти проєкти автоматизовано, використайте:
scons -j8 platform=server tools=yes target=release_debug
Щоб зібрати серверну версію, яку можна використати зі сторонніми інструментами дебагу, скористайтесь:
scons -j8 platform=server tools=no target=release_debug
Щоб зібрати серверну версію, оптимізовану для запуску ігрових серверів, скористайтесь:
scons -j8 platform=server tools=no target=release
Збірка шаблонів експорту¶
Попередження
Зазвичай, програми для Linux не запускаються на дистрибутивах, старіших ніж той, на якому вони побудовані. Якщо ви хочете мати змогу розповсюджувати свою збірку серед більшости дистрибутивів, вам варто зібрати програму на старій версії ОС, на зразок Ubuntu 16.04. Ви можете скористатись віртуальними машинами чи контейнерами щоб підготувати стабільне середовище для збірки.
Щоб зробити шаблон для експорту на X11 (Linux, *BSD), запустіть систему побудови з такими параметрами:
(32 біт)
scons platform=x11 tools=no target=release bits=32
scons platform=x11 tools=no target=release_debug bits=32
(64 біт)
scons platform=x11 tools=no target=release bits=64
scons platform=x11 tools=no target=release_debug bits=64
Візьміть до уваги: збірка для протилежної платформи (64/32) може бути складним завданням, та потребувати входу в середовище chroot.
Щоби створити типові шаблони експорту, отримані файли потрібно скопіювати до:
$HOME/.local/share/godot/templates/[gd-version]/
і назвати ось так (навіть для *BSD, яку Godot сприймає як „Linux X11“):
linux_x11_32_debug
linux_x11_32_release
linux_x11_64_debug
linux_x11_64_release
А якщо ви пишете власні модулі чи код на C++ то вам, натомість, краще обрати ваші шаблони експорту тут:

Вам навіть не потрібно копіювати їх файли, достатньо просто вказати їх в підтеці ``bin/``з теки, де знаходиться код Godot, щоб наступного разу, при збірці, ваші шаблони будуть додані автоматично.
Використання Clang та LLD для пришвидшення розробки¶
Ви можете збудувати Godot з Clang та LLD. Вони мають пару переваг у порівнянні зі стандартною зв'язкою GCC + GNU ld:
LLD збирає Godot значно швидше у порівнянні з to GNU ld чи gold. Таким чином збирання проходить швидшими ітераціями.
Clang дає корисніші повідомлення про помилки ніж GCC.
Щоб це зробити, встановіть Clang та пакет lld
з вашого пакетного менеджера та використайте їх в наступній команді:
scons platform=x11 use_llvm=yes use_lld=yes
Щойно побудова буде завершена, в теці bin/
буде створений новий бінарний файл із суфіксом .llvm
.
Але ми рекомендуємо використовувати GCC для фінальної збірки, так як він дає змогу її оптимізувати: зробити кінцевий бінарний файл меншим та швидшим.
Using Pyston for faster development¶
You can use Pyston to run SCons. Pyston is a JIT-enabled implementation of the Python language (which SCons is written in). It is currently only compatible with Linux. Pyston can speed up incremental builds significantly, often by a factor between 1.5× and 2×. Pyston can be combined with Clang and LLD to get even faster builds.
Download the latest portable Pyston release.
Extract the portable
.tar.gz
to a set location, such as$HOME/.local/opt/pyston/
(create folders as needed).Use
cd
to reach the extracted Pyston folder from a terminal, then run./pyston -m pip install scons
to install SCons within Pyston.To make SCons via Pyston easier to run, create a symbolic link of its wrapper script to a location in your
PATH
environment variable:ln -s ~/.local/opt/pyston/bin/scons ~/.local/bin/pyston-scons
Instead of running
scons <build arguments>
, runpyston-scons <build arguments>
to compile Godot.
If you can't run pyston-scons
after creating the symbolic link,
make sure $HOME/.local/bin/
is part of your user's PATH
environment variable.