为X11平台(Linux、*BSD操作系统)编译¶
需求¶
要在Linux或其他类Unix系统下进行编译,需要满足以下条件:
GCC 7+ 或 Clang 6+。
Python 3.5+。
SCons 3.0+ 构建系统。如果你的发行版默认使用Python 2,或者你使用的是SCons 3.1.2之前的版本,你需要通过修改SCons脚本文件的shebang (第一行)来改变SCons使用的Python版本,改为``#!/usr/bin/python3``。使用命令``which scons``来找到SCons脚本文件的位置。
pkg-config (用于检测下面这些依赖库)。
X11,Xcursor,Xinerama,Xi和XRandR开发库。
MesaGL开发库。
ALSA开发库。
PulseAudio开发库。
可选——libudev(使用
udev = yes
构建)。可选——yasm(用于WebM SIMD优化)。
参见
有关Godot的SCons用法的一般概述,请参阅 构建系统介绍。
Distro-specific one-liners¶
Alpine Linux |
apk add scons pkgconf gcc g++ libx11-dev libxcursor-dev libxinerama-dev libxi-dev libxrandr-dev \
libexecinfo-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
|
FreeBSD |
sudo pkg install 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
For audio support, you can optionally install |
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的线程至少要与CPU中具有内核的线程数量一样多,甚至不多于一个或两个。随意将 -j
选项添加到下面显示的任何SCons命令中。
如果一切顺利,生成的二进制可执行文件将放在 `` bin`` 子目录中。该可执行文件包含整个引擎,并且运行时无需任何依赖项。 执行它将会启动项目管理器。
注解
如果您希望使用 Clang 而不是 GCC 编译器, 可以使用这个命令:
scons platform=x11 use_llvm=yes
使用Clang似乎是OpenBSD的要求,否则字体将无法生成。
注解
如果您正在编译Godot用于生产用途,那么您可以通过添加SCons选项 target=release_debug
来使最终的可执行文件更小更快。
If you are compiling Godot with GCC, you can make the binary
even smaller and faster by adding the SCons option use_lto=yes
.
As link-time optimization is a memory-intensive process,
this will require about 7 GB of available RAM while compiling.
注解
如果你想为自己的Godot构建和官方发布使用单独的编辑器设置,你可以通过在``bin/文件夹中创建一个名为
._sc_``或``_sc_```的文件来启用:ref:doc_data_paths_self_contained_mode。
编译精简和服务器构建¶
要编译一个 精简 构建,它提供了编辑器功能,可以自动导出项目,使用:
scons -j8 platform=server tools=yes 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 ++代码,则可能需要在此处将二进制文件配置为自定义导出模板:

您甚至不需要复制它们,只需引用在Godot源文件夹的 bin/
目录中生成的文件,因此下次构建时,将自动引用自定义模板。
使用 Clang 和 LLD 可以加快开发速度¶
你也可以使用Clang和LD来构建Godot。与默认的GCC + GNU ld设置相比,这有两个好处:
与GNU ld或gold相比,LD链接Godot的速度明显更快。这导致更快的迭代时间。
Clang tends to give more useful error messages compared to GCC.
为此,请从分发的包管理器中安装 Clang 和"lld"包,然后使用以下 SCons 命令::
scons platform=x11 use_llvm=yes use_lld=yes
仍然建议使用GCC进行生产构建,因为它们可以使用链接时间优化进行编译,使产生的二进制文件更小、更快。