INTSourceChangelist:3810557 Availability:Public Title:编译游戏项目 Crumbs: %ROOT%, Programming, Programming/Development Description:使用Windows上的Visual Studio或Mac上的Xcode编译单个游戏项目。 Version: 4.16 Parent:Programming/Development Order: type:overview [TOC (start:2 end:3)] [EXCERPT:Main] 虚幻引擎4(UE4)通过UnrealBuildTool使用自定义构建方法,该工具处理所有复杂的项目编译工作, 并将项目与引擎关联起来。该过程以透明方式进行,这样,您只需通过标准的Visual Studio 构建工作流程构建项目即可。 UnrealBuildTool使用.Build.cs和.Target.cs文件来构建游戏项目。这些文件在以下情况下会自动生成: 使用C++模板创建项目;或者使用[](Programming\Development\ManagingGameCode\CppClassWizard)向使用“仅蓝图”模板创建的 项目添加代码。 (#buildconfiguration) ## 构建配置 UE4和UnrealBuildTool使用不同的构建配置来确定如何编译引擎。您使用哪种配置取决于想要创建的构建目的。 [INCLUDE:#winbuildconfig] [/EXCERPT:Main] [COMMENT:none] [EXCERPT:winbuildconfig] 每种构建配置都包含两个关键词。第一个表示引擎状态和游戏项目。例如,如果使用 **调试(Debug)** 配置进行编译,将能够 调试游戏代码。第二个关键词表示构建目标。例如,如果想要在虚幻中打开项目,需要使用 **编辑器(Editor)** 目标关键词 进行构建。 |构建配置——状态 | 说明 | |------------- |------------- | | **调试(Debug)** | 该配置包含用于调试的符号。该配置在调试配置中同时构建引擎和游戏代码。如果通过 **调试(Debug)** 配置编译项目并打算用虚幻编辑器打开项目,则必须使用“-debug”标志查看项目中反映出来的代码变化。| | **调试游戏(DebugGame)** | 该配置按最优方式构建引擎,但游戏代码为可调试状态。此配置适用于调试游戏模块。| | **开发(Development)** | 该配置等同于发布。虚幻编辑器默认采用 **开发(Development)** 配置。如采用 **开发(Development)** 配置编译项目,可在编辑器中看到项目代码的变化情况。| | **交付(Shipping)** | 这是最佳性能配置,用于交付游戏。此配置剥离了控制台命令、统计数据和性能分析工具。| | **测试(Test)** | 该配置就是启用了一些控制台命令、统计数据和性能分析工具后的 **交付(Shipping)** 配置。| |构建配置——目标 | 说明 | | ------------------ | ---------- | | **[空(empty)]** | 该配置构建项目的独立可执行版本,但需要特定于平台的已烘焙内容。请参阅我们的[](Engine/Basics/Projects/Packaging)参考页面,以进一步了解烘焙内容。| | **编辑器(Editor)** | 为了能够在虚幻编辑器中打开项目并看到反映出来的所有代码更改,项目必须以 **编辑器(Editor)** 配置构建。| | **客户端(Client)** | 如果您使用UE4联网功能处理多人项目,该目标将指定项目用作面向多玩家游戏的UE4客户端-服务器模型中的客户端。如果存在`Client.Target.cs`文件,则 **客户端(Client)** 构建配置将有效。| | **服务器(Server)** | 如果您使用UE4联网功能处理多人项目,该目标将指定项目用作面向多玩家游戏的UE4客户端-服务器模型中的服务器。如果存在`Server.Target.cs`文件,则 **服务器(Server)** 构建配置将有效。| [/EXCERPT:winbuildconfig] [/COMMENT] [EXCERPT:VS] (#buildingwithvisualstudio) ## 使用Visual Studio进行构建 (#settingthebuildconfiguration) ### 设置构建配置 构建配置可以在Visual Studio工具栏中设置。 (#project-configurationmenu) ### 项目——配置菜单 ![项目——配置菜单](rocket_configuration_menu.png) [COMMENT:none] (#solution-configurationmenu) ### 解决方案——配置菜单 ![UE4解决方案——配置菜单](configuration_menu.png) [/COMMENT] (#settingthesolutionplatform) ### 设置解决方案平台 解决方案平台可以在Visual Studio工具栏中设置。 [COMMENT:none] UE4目前支持以下平台: * **Windows 64位** ![项目——平台菜单](rocket_platform_menu.png) ![UE4解决方案——平台菜单](platform_menu.png) [/COMMENT] UE4目前支持以下平台: * **Windows 32位** * **Windows 64位** 在使用虚幻引擎4时,您通常使用 **Win64** 平台。这是生成项目文件时默认包含的唯一一个平台;[](Programming/UnrealBuildSystem/ProjectFileGenerator)页面 包含为其他平台生成项目文件的说明。 (#buildingtheproject) ### 构建项目 [REGION:note] 在继续之前,请确保您运行的是适用于已安装的Windows桌面版的Visual Studio 2015或更高版本。如果使用Mac,请确保安装Xcode 8或更高版本。 [/REGION] [COMMENT:none] [REGION:tip] 在Visual Studio中构建时,您仅编译游戏项目,而不是虚幻编辑器。 [/REGION] [REGION:tip] 在Visual Studio中构建时,除了游戏项目,您还会编译引擎。 [/REGION] 1. 将 **解决方案配置(Solution Configuration)** 设置为您想要构建的配置。在该示例中,设置为了 **开发编辑器(Development Editor)**。请参考[构建配置](#BuildConfiguration)部分以了解每个可用配置的说明。 ![项目——将配置设置为开发](config_development_menu.png) 1. **右键单击** 游戏项目并选择 **重新构建(Rebuild)** 来重新编译。 ![](rebuild_project_rocket.png) [/COMMENT] 1. 将 **解决方案配置(Solution Configuration)** 设置为您想要构建的配置。在该示例中,设置为了 **开发编辑器(Development Editor)**。请参考[构建配置](#BuildConfiguration)部分以了解每个可用配置的说明。 ![](rocket_config_development_menu.png) 1. **右键单击** 游戏项目并选择 **重新构建(Rebuild)** 来重新编译。 ![](rebuild_project_outside.png) 现在,您可以通过编译好的项目[运行引擎](GettingStarted/RunningUnrealEngine)。 [INCLUDE:#MatchEXE] (#visualstudioknownissues) ### Visual Studio已知问题 | 问题 | 解决方案 | | ----- | -------- | | 总是出现“项目过期(Project is out of date)”消息 | Visual Studio认为项目过期,但项目其实是最新状态。您可以选中 **不再显示该消息(Do not show this dialog again)** 框并按 **否(No)** 来安全禁止该消息。| | 使用_调试(Debug)_配置时出现 **无调试信息(No Debugging Information)** 窗口 | 原因是UE4editor.exe是使用_开发(Development)_配置编译的。尽管在使用_调试(Debug)_配置进行编译时出现这个警告,游戏项目也仍然可以调试。您可以选中 **不再显示该消息(Do not show this dialog again)** 框并按 **是(Yes)** 来安全禁止该消息。| [/EXCERPT:VS] [COMMENT:none] [EXCERPT:MatchEXE] [REGION:note] 在运行引擎时,必须使用与重新构建项目所用的构建配置相匹配的虚幻引擎可执行文件。例如,如果项目编译使用的是 **调试游戏未烘焙(DebugGame Uncooked)** 构建配置,则在运行`UE4-Win64-DebugGame.exe`可执行文件时,应以游戏信息作为参数。有关二进制命名约定的更多信息,请参阅[构建虚幻引擎](Programming/Development/BuildingUnrealEngine)页面。 [/REGION:note] [REGION:note] 在运行虚幻时,如果是以任何 **未烘焙(Uncooked)** 配置重新构建项目的,则必须添加`-game`标志,如果是以 **调试(Debug)** 配置重新构建项目的,则必须添加`-debug`标志。 [/REGION:note] [/EXCERPT:MatchEXE] [/COMMENT] [EXCERPT:Xcode] (#buildingwithxcode) ## 使用Xcode构建 [REGION:note] 在Xcode中构建时,您仅编译游戏项目,而不是编辑器。 [/REGION] **要编译项目:** 如果您使用Xcode的 **产品(Product)>构建(Build)** 选项,则虚幻引擎Xcode项目配置为构建“调试(Debug)”配置;如果使用 **产品(Product)>构建用途(Build For)>分析(Profiling)**,则构建“开发(Development)”配置。您可以通过编辑目标方案来编辑该行为。 现在,您可以通过编译好的项目[运行引擎](GettingStarted/RunningUnrealEngine)。 [INCLUDE:#MatchDMG] (#xcodeknownissues) ### Xcode已知问题 | 问题 | 解决方案 | | ----- | -------- | | Xcode不会在断点处停止 | [INCLUDE:#XcodeDebug] | [/EXCERPT:Xcode] [COMMENT:none] [EXCERPT:XcodeDebug] Xcode的LLDB调试程序需要进行配置,才能正确处理虚幻引擎项目中的断点。您需要在主目录中创建.lldbinit文件(如果已经有了则需要编辑),并添加以下行: settings set target.inline-breakpoint-strategy always [/EXCERPT:XcodeDebug] [EXCERPT:MatchDMG] [REGION:note] 在运行二进制编辑器时,如果是以任何 **未烘焙(Uncooked)** 配置重新构建项目的,则必须添加`-game`标志,如果是以 **调试(Debug)** 配置重新构建项目的,则必须添加`-debug`标志。 [/REGION:note] [/EXCERPT:MatchDMG] [/COMMENT]