为Windows平台编译

需求

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

  • Visual Studio Community, version 2015 (14.0) or later. VS 2019 is recommended. Make sure to read “Installing Visual Studio caveats” below or you will have to run/download the installer again.
  • MinGW-w64 with GCC can be used as an alternative to Visual Studio. Be sure to install/configure it to use the posix thread model.
  • Python 3.5+ (推荐) 或 Python 2.7+
  • SCons build system. If using Visual Studio 2019, you must have SCons 3.1.1 or later.
  • 可选 - yasm (用于WebM SIMD优化)

注解

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

scoop install gcc python scons yasm make

注解

If you have MSYS2 installed, you can easily install MinGW and other dependencies using the following command:

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

For each MSYS2 MinGW subsystem, you should then run
`pip install scons` in its shell.

参见

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

设置SCons

首先,请确保启用Python安装程序中的将Python添加到 PATH 选项。然后,SCons安装程序应检测并使用现有的Python安装。

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

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

安装Visual Studio注意事项

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

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

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

下载Godot的源代码

Godot的源代码位于 GitHub 上。建议使用 Git 下载(克隆)。

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

开始编译

选择编译器

SCons将自动查找并使用现有的Visual Studio安装。如果您没有安装Visual Studio,它将尝试改用MinGW。如果您已经安装了Visual Studio,并且想使用MinGW,请将 use_mingw=yes 传递给SCons命令行。

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

运行SCons

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

C:\godot> scons platform=windows

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

C:\godot> scons -j6 platform=windows

通常,编译Godot的线程数与CPU内核的数量(即使不超过一个或两个)可以一样多。随时将 -j 选项添加到您在下面看到的任何SCons命令中。

注解

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

如果一切顺利,将生成的二进制可执行文件位于 C:\godot\bin\ ,其名称为 godot.windows.tools.32.exegodot.windows.tools.64.exe

注解

By default, SCons will build a binary matching your CPU architecture, but this can be overridden using bits=64 or bits=32.

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

注解

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

如果要使用MinGW编译Godot,则可以通过添加SCons选项 use_lto=yes 使二进制文件变得更小、更快。由于链接时间优化是一个占用大量内存的过程,因此编译时将需要大约3 GB的可用RAM。

在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中执行以下操作将导致编译器正常工作(版本输出可能因您的系统而异):

[email protected]:~$ ${MINGW32_PREFIX}gcc --version
i686-w64-mingw32-gcc (GCC) 6.1.0 20160427 (Mageia MinGW 6.1.0-1.mga6)

故障排除

由于默认配置不支持POSIX线程,因此从某些Ubuntu版本进行交叉编译可能会导致 此bug

您可以按照以下说明针对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\ 目录中生成的文件,因此下次构建时,将自动引用自定义模板。