Збірка під 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

Для забезпечення підтримки звуку ви, якщо хочете, можете встановити pulseaudio.

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 platform=x11

Якщо все пройде успішно, кінцевий файл програми буде знаходитись в теці „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 platform=server tools=yes target=release_debug

Щоб зібрати серверну версію, яку можна використати зі сторонніми інструментами дебагу, скористайтесь:

scons platform=server tools=no target=release_debug

Щоб зібрати серверну версію, оптимізовану для запуску ігрових серверів, скористайтесь:

scons 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++ то вам, натомість, краще обрати ваші шаблони експорту тут:

../../_images/lintemplates.png

Вам навіть не потрібно копіювати їх файли, достатньо просто вказати їх в підтеці ``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>, run pyston-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.