为 X11 平台编译(Linux、*BSD 操作系统)
需求
要在Linux或其他类Unix系统下进行编译, 需要满足以下条件:
- GCC 7+ 或 Clang 6+.
- Python 3.5+.
#!/usr/bin/python3. 使用命令which scons来找到SCons脚本文件的位置.- pkg-config (用于检测下面这些依赖库).
- X11,Xcursor,Xinerama,Xi和XRandR开发库.
- MesaGL开发库.
- ALSA开发库.
- PulseAudio开发库.
- 可选 ——libudev(使用
udev = yes构建). - 可选 ——yasm(用于WebM SIMD优化).
参见
构建系统介绍。
各个发行版的安装指令
编译
启动终端, 然后进入引擎源代码的根目录. 键入下面的指令:scons -j8 platform=x11
-j(jobs)标志的一个好的经验法则是, 编译Godot的线程至少要与CPU中具有内核的线程数量一样多, 甚至不多于一个或两个. 随意将-j选项添加到下面显示的任何SCons命令中. 如果一切顺利, 生成的二进制可执行文件将放在bin子目录中. 该可执行文件包含整个引擎, 并且运行时无需任何依赖项. 执行它将会启动项目管理器. 注解 如果你希望使用 Clang 而不是 GCC 编译器, 可以使用这个命令:
使用Clang似乎是OpenBSD的要求, 否则字体将无法生成. 注解scons platform=x11 use_llvm=yes
target=release_debug来使最终的可执行文件更小更快.use_lto=yes来使可执行文件更小更快. 由于链接时优化是一个内存密集的过程, 在编译时需要大约7GB的可用内存. 注解bin/文件夹中创建一个名为._sc_或_sc_的文件来启用 自包含模式.编译无头/服务器构建
无头构建,支持编辑器的自动化导出项目功能,请使用:
服务器,支持远程调试工具,那么请使用: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)导出模板, 请使用以下参数运行构建系统: -
-scons platform=x11 tools=no target=release bits=32scons platform=x11 tools=no target=release_debug bits=32
请注意, 与您的主机平台相反的位(64/32)交叉编译并不总是直接的, 并且可能需要chroot环境. 要创建标准导出模板, 必须将生成的文件复制到:scons platform=x11 tools=no target=release bits=64scons platform=x11 tools=no target=release_debug bits=64
并以此命名(即使对于*BSD, 它也被Godot视为” Linux X11”):$HOME/.local/share/godot/templates/[gd-version]/
此外, 如果要编写自定义模块或自定义C ++代码, 则可能需要在此处将二进制文件配置为自定义导出模板:linux_x11_32_debuglinux_x11_32_releaselinux_x11_64_debuglinux_x11_64_release
bin/目录中生成的文件, 因此下次构建时, 将自动引用自定义模板.使用 Clang 和 LLD 可以加快开发速度
你也可以使用Clang和LD来构建Godot. 与默认的GCC + GNU ld设置相比, 这有两个好处: - 与GNU ld或gold相比,LD链接Godot的速度明显更快. 这导致更快的迭代时间.
- 与GCC相比,Clang倾向于给出更多有用的错误信息.
lld包,然后使用以下 SCons 命令:scons platform=x11 use_llvm=yes use_lld=yes
bin/文件夹中创建一个以.llvm为后缀的新的二进制文件。 仍然建议使用GCC进行生产构建, 因为它们可以使用链接时间优化进行编译, 使产生的二进制文件更小, 更快.
