为Windows编译

要求

在Windows下编译需要以下内容:

  • Visual Studio Community <https://www.visualstudio.com/vs/community/> _ 2015版(14.0)或更高版本。 Make sure to read "Installing Visual Studio caveats" below or you will have to run/download the installer again.

  • mingw-w64可以用作Visual Studio的替代方案。

  • Python 3.5+ (recommended) or Python 2.7+.

  • SCons 构建系统。

  • 可选的 - yasm (用于WebM SIMD优化)

注解

如果你有 Scoop 安装后,可以使用以下命令轻松安装mingw和其他依赖项:

scoop install gcc python scons

参见

有关godot的scons用法的概述,请参阅 建筑系统简介 .

设置scons

首先,确保启用将python添加到 PATH 在python安装程序中。然后,scons安装程序应该检测并使用现有的python安装。

要检查是否正确安装了python和scons,可以键入 python --versionscons --version 进入命令提示 (cmd.exe

如果上面的命令不起作用,请确保将python添加到 PATH 环境变量安装后,请再次检查。您可以通过再次运行python安装程序并启用将python添加到 PATH .

安装Visual Studio警告

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

如果安装Visual Studio 2015,请确保运行 习俗 安装而不是 典型 并选择 C++ 作为一种语言。

如果您已经在没有C++支持的情况下安装VisualStudio的错误,请再次运行安装程序;它应该呈现给您 修改 按钮。从运行安装程序 Add/Remove Programs 只会给你一个 修理 选项,它不会让你安装C++工具。

下载Godot的源代码

Godot的源代码是 hosted on GitHub . 使用下载(克隆) Git 建议使用。

从现在起,本教程将假定您将源代码放在 C:\godot .

编译

选择编译器

scons将自动查找并使用现有的Visual Studio安装。如果没有安装Visual Studio,它将尝试使用mingw。如果您已经安装了Visual Studio并希望使用mingw,请通过 use_mingw=yes 到scons命令行。

在开发过程中,使用Visual Studio编译器通常是一个更好的主意,因为它链接godot二进制文件的速度比mingw快得多。但是,mingw可以使用链接时间优化(见下文)生成更优化的二进制文件,使其成为生产使用的更好选择。

运行scons

打开命令提示后,更改为引擎源代码的根目录(使用 cd )和类型:

C:\godot> scons platform=windows

您可以指定多个CPU线程用于加速生成:

C:\godot> scons -j6 platform=windows

一般来说,编译godot的线程至少和CPU中的内核一样多,如果不是一个或两个以上的话。请随意将-j选项添加到下面看到的任何scons命令中。

注解

当使用多个CPU线程进行编译时,SCON可能会警告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 . 由于链接时间优化是一个内存密集型过程,因此在编译时需要大约3 GB的可用RAM。

在Visual Studio或其他IDE中开发

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

通过使用 vsproj=yes 参数,如下所示:

scons p=windows vsproj=yes

您现在可以在Visual Studio解决方案中打开Godot的源代码,并且可以使用Visual Studio的 构建 按钮。

如果您需要编辑构建命令,它们位于“godot”项目设置nmake sheet中。在命令末尾调用scons。如果您犯了错误,请从其他生成配置(debug、release_debug、release)或体系结构(win32/x64)中复制该命令;它们是等效的。

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

如果您是Linux或MacOS用户,则需要安装 MinGW-w64 ,通常是32位和64位的变体。根据您的分布情况,包名称可能有所不同,以下是一些已知的包名称:

Arch Linux系统

安装 mingw-w64-gcc from the AUR .

德比 / 乌邦图

apt install mingw-w64

费多拉

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

macOS

brew install mingw-w64

马吉亚

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

user@host:~$ ${MINGW32_PREFIX}gcc --version
i686-w64-mingw32-gcc (GCC) 6.1.0 20160427 (Mageia MinGW 6.1.0-1.mga6)

故障排除

从一些Ubuntu版本交叉编译可能导致 this bug ,因为默认配置缺少对POSIX线程的支持。

您可以按照这些说明将该配置更改为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

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

%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

在这种情况下,您不需要复制它们,只需在 bin\ 您的godot源文件夹的目录,所以下次构建时,您将自动引用自定义模板。