为 Windows 平台编译

参见

这个页面描述的是如何从源码编译 Windows 编辑器和导出模板二进制文件。如果你要找的是导出项目到 Windows,请阅读 为 Windows 导出

需求

要在Windows下进行编译, 需要以下内容:

  • Visual Studio Community ,2017或更高版本. 建议使用VS 2019. 请务必阅读下面的 "安装Visual Studio注意事项", 否则你将不得不再次运行/下载安装程序.

  • MinGW-w64 与GCC可以作为Visual Studio的替代品. 请确保安装/配置为使用 posix 线程模型.

  • Python 3.5+请确保在安装程序中勾选将 Python 添加到 ``PATH`` 的选项。

  • SCons 构建系统。推荐使用最新版本,尤其是为了支持最近的 Visual Studio 版本。

备注

如果您已安装 Scoop,则可以使用以下命令轻松安装 MinGW 和其他依赖项:

scoop install gcc python scons make

备注

如果你已经安装了 MSYS2,你可以使用以下命令轻松安装 MinGW 和其他依赖项:

pacman -S mingw-w64-x86_64-python3-pip mingw-w64-x86_64-gcc \
    mingw-w64-i686-python3-pip mingw-w64-i686-gcc make

对于每个 MSYS2 MinGW 子系统,你应该在其 shell 中运行 pip3 install scons

参见

要获取编译所需的 Godot 源码,请参阅 获取源代码

有关 Godot 的 SCons 用法的一般概述,请参阅 构建系统介绍

设置 SCons

要安装 SCons,请打开命令提示符并运行以下命令:

python -m pip install scons

如果你看到提示信息 Defaulting to user installation because normal site-packages is not writeable,那么你就需要提升权限后再重新执行该命令。使用管理员身份打开一个新的命令提示符,然后再执行该命令,确保 SCons 可以通过 PATH 访问。

要检查是否已正确安装Python和SCons, 可以在命令提示符 (cmd.exe) 中键入 python --versionscons --version.

如果上面的命令不起作用, 请确保在安装后将Python添加到 PATH 环境变量中, 然后再次检查. 为此, 您可以再次运行Python安装程序并启用将Python添加到 PATH 的选项.

如果 SCons 无法检测到你的 Visual Studio 安装,可能是因为你的 SCons 版本太老了。请使用 python -m pip install --upgrade scons 将其更新为最新版本。

安装 Visual Studio 注意事项

如果安装Visual Studio 2017或2019, 请确保启用要安装的工作流程列表中的 C++ .

如果安装Visual Studio 2015, 请确保运行 自定义 安装而不是 典型 安装, 然后选择 C++ 作为语言.

如果您已经犯了在没有C++支持的情况下安装Visual Studio的错误, 请再次运行安装程序;它将为您提供一个 修改 按钮. 从 添加/删除程序 中运行安装程序只会给您提供 修复 选项, 而该选项将不允许您安装C++工具.

下载 Godot 的源代码

详细步骤请参考 获取源代码

从现在开始,本教程将假设您将源代码放在了 C:\godot

警告

为了防止编译过程中由于连续病毒扫描而导致的速度减慢,请将 Godot 源文件夹添加到杀毒软件中的例外列表中。

对于 Windows Defender,请按 Windows 键,输入“Windows Defender Settings”然后按 Enter。在 病毒和威胁防护 下,进入病毒和威胁防护设置,并向下滚动至排除项。单击添加或删除排除项,然后添加 Godot 源文件夹。

编译

选择编译器

SCons 将自动查找并使用现有的 Visual Studio 安装。如果你没有安装 Visual Studio,它将尝试使用 MinGW 代替。如果你已经安装了 Visual Studio 并想使用 MinGW,请在 SCons 命令行中传入 use_mingw=yes。注意,MSVC 的构建不能从 MSYS2 或 MinGW 的 shell 中进行。使用 cmd.exe 或 PowerShell 代替。

在开发过程中,通常最好使用 Visual Studio 编译器,因为链接 Godot 二进制文件的速度比 MinGW 更快。但是,MinGW 可以利用链接时优化(见下文)来生成更多优化的二进制文件,从而使其成为生产使用的更好选择。

运行 SCons

打开命令提示符后,(使用 cd)转到引擎源代码的根目录,然后键入:

C:\godot> scons platform=windows

您可以指定 CPU 线程数来加速构建:

C:\godot> scons -j6 platform=windows

一般来说,编译 Godot 的线程数至少要和你的 CPU 核心数一样多,甚至多一到两个也行。你可以在下面看到的任何 SCons 命令中添加 -j 选项。

备注

使用多个 CPU 线程进行编译时,SCons 可能会警告 pywin32 丢失。您可以放心地忽略此警告。

如果一切顺利, 生成的二进制可执行文件将被放在 C:\godot\bin\ 中, 名称为 godot.windows.tools.32.exegodot.windows.tools.64.exe . 默认情况下,SCons将建立一个与你的CPU架构相匹配的可执行文件, 但这可以用 bits=64bits=32 来覆盖.

该可执行文件包含整个引擎,并且运行时没有任何依赖项。运行它会启动项目管理器。

备注

如果您正在编译Godot用于生产用途, 那么您可以通过添加SCons选项 target=release_debug 来使最终的可执行文件更小更快.

如果你用MinGW编译Godot, 你可以通过添加SCons选项 use_lto=yes 来使二进制文件更小更快. 由于链接时优化是一个内存密集的过程, 在编译时需要大约7GB的可用内存.

备注

如果你想为自己的 Godot 构建和官方发布使用单独的编辑器设置,你可以通过在 bin/ 文件夹中创建一个名为 ._sc__sc_ 的文件来启用 自包含模式

在 Visual Studio 或其他 IDE 中进行开发

对于大多数项目,只使用脚本就足够了,但是当需要 C++ 开发时,为了创建模块或扩展引擎,通常需要使用 IDE。

您可以通过使用 vsproj=yes 参数运行 SCons 来创建 Visual Studio 解决方案,如下所示:

scons p=windows vsproj=yes

您现在可以在 Visual Studio 解决方案中打开 Godot 的源代码,并能够通过 Visual Studio 的构建按钮构建 Godot。

如果需要编辑构建命令, 它们位于 "Godot" 项目设置,NMAKE表中. 在命令结束时调用SCons. 如果出错, 请从其他构建配置(debug,release_debug,release)或体系结构(Win32 / x64)中复制命令. 它们是等价的.

从其他操作系统为 Windows 交叉编译

如果你是Linux或macOS用户, 你需要安装 MinGW-w64 , 它通常有32位和64位两种版本. 包的名称可能根据你的发行版而不同, 这里有一些已知的包:

Arch Linux

安装 AUR 中的 mingw-w64-gcc

Debian / Ubuntu

apt install mingw-w64

Fedora

dnf install mingw64-gcc-c++ mingw64-winpthreads-static \
            mingw32-gcc-c++ mingw32-winpthreads-static

macOS

brew install mingw-w64

Mageia

urpmi mingw64-gcc-c++ mingw64-winpthreads-static \
      mingw32-gcc-c++ mingw32-winpthreads-static

在尝试编译之前,SCons 将在 PATH 环境变量中检查以下二进制文件:

i686-w64-mingw32-gcc
x86_64-w64-mingw32-gcc

如果这些二进制文件不在 PATH 中(例如 /usr/bin),则可以定义以下环境变量来提示以构建系统:

export MINGW32_PREFIX="/path/to/i686-w64-mingw32-"
export MINGW64_PREFIX="/path/to/x86_64-w64-mingw32-"

为了确保您做的事正确,在 shell 中执行以下操作将导致编译器正常工作(版本输出可能因您的系统而异):

${MINGW32_PREFIX}gcc --version
# i686-w64-mingw32-gcc (GCC) 6.1.0 20160427 (Mageia MinGW 6.1.0-1.mga6)

故障排除

Cross-compiling from some Ubuntu versions may lead to this bug, due to a default configuration lacking support for POSIX threading.

您可以按照以下说明针对 64 位更改该配置:

sudo update-alternatives --config x86_64-w64-mingw32-gcc
<choose x86_64-w64-mingw32-gcc-posix from the list>
sudo update-alternatives --config x86_64-w64-mingw32-g++
<choose x86_64-w64-mingw32-g++-posix from the list>

对于 32 位:

sudo update-alternatives --config i686-w64-mingw32-gcc
<choose i686-w64-mingw32-gcc-posix from the list>
sudo update-alternatives --config i686-w64-mingw32-g++
<choose i686-w64-mingw32-g++-posix from the list>

创建 Windows 导出模板

Windows 导出模板是通过编译不使用编辑器的 Godot 来创建的,带有以下标志:

C:\godot> scons platform=windows tools=no target=release_debug bits=32
C:\godot> scons platform=windows tools=no target=release bits=32
C:\godot> scons platform=windows tools=no target=release_debug bits=64
C:\godot> scons platform=windows tools=no target=release bits=64

如果计划替换标准导出模板,复制模板到以下位置,并用版本标识符(例如 3.1.1.stable3.2.dev)替换 <version>

%USERPROFILE%\AppData\Roaming\Godot\templates\<version>\

使用以下名称:

windows_32_debug.exe
windows_32_release.exe
windows_64_debug.exe
windows_64_release.exe

此外, 如果您使用的是自定义模块或自定义引擎代码, 则可能需要在此处将二进制文件配置为自定义导出模板:

../../_images/wintemplates.png

在这种情况下, 您不需要复制它们, 只需引用在Godot源文件夹的 bin\ 目录中生成的文件, 因此下次构建时, 将自动引用自定义模板.