Files
UnrealEngineUWP/Engine/Documentation/Source/Programming/UnrealBuildSystem/ProjectFileGenerator/ProjectFileGenerator.CHN.udn
Mitchell Wilson 0b47855b71 Copying //UE4/Dev-Documentation to Samples-Main (//UE4/Samples-Main) CL - 4860397
#rb none

[CL 4860421 by Mitchell Wilson in Main branch]
2019-01-31 15:30:04 -05:00

152 lines
9.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
INTSourceChangelist:3810557
Availability:Public
Title:自动项目文件生成
Crumbs:%ROOT%
Parent:Programming/UnrealBuildSystem
Order:
Description:为当前工作空间中的游戏和模块自动生成项目文件的过程。
Version: 4.16
prereq:Programming/Development/BuildingUnrealEngine
topic-image:topic_prjFileGen.png
tags:Programming
tags:Unreal Build System
[TOC(start:1 end:2)]
[REGION:warning]
以下指南适用于从GitHub上下载并从源代码构建了UE4的用户。
[/REGION]
如果您下载的是最新版虚幻引擎4UE4代码可能会注意到其中不包含用于编译和运行引擎或示例游戏的Visual StudioVS或Xcode项目文件。您需要运行一个脚本来生成可供加载的项目文件
* 运行UE4主目录中的GenerateProjectFiles.bat文件
[REGION:note]
您可以从任意文件夹运行该脚本。(如果需要,也可以创建桌面快捷方式。)
[/REGION]
* 项目生成工具将分析模块和目标构建文件并生成新项目文件。这个过程最多需要15秒左右。
对于VS开发者这样会在同一个目录中生成UE4.sln文件。您将使用该解决方案文件构建和运行UE4游戏和程序。如果是首次编译我们建议在Win64平台中使用“开发Development”配置
[REGION:note]
默认情况下我们会为检测到相应SDK的所有可用平台生成可构建项目这样您也能够构建和调试控制台和移动平台。如果您只想为运行的当前平台如Windows生成项目请使用-CurrentPlatform参数运行GenerateProjectFiles.bat。这样项目文件会稍微小一些。
[/REGION]
**要点**在从源代码控制同步新代码更改后务必重新运行GenerateProjectFiles.bat。如果忘记这步操作很可能会在编译或运行游戏时遇到问题。
如果您对模块进行了本地更改如添加或移除源文件应再次运行GenerateProjectFiles.bat。我们建议不要对项目文件进行手动更改。
(#integrationwithunrealvsextension)
## 与UnrealVS扩展集成
适用于VS的[](Programming/Development/VisualStudioSetup/UnrealVS)包含一个工具栏按钮,单击后可以为当前加载的解决方案重新生成项目文件。
您还可以为该功能绑定一个快捷键。在VS中打开“工具Tools->选项Options->环境Environment->键盘Keyboard然后搜索UnrealVS.RefreshProjects。
请注意,该功能仅在您加载了解决方案后才会启用(因为该工具需要知道要为哪个代码分支生成项目。)如果您尚未生成`UE4.sln`文件,需要先运行`GenerateProjectFiles.bat`脚本。
(#command-lineoptions(advanced))
## 命令行选项(高级)
项目生成工具包含一些可选的命令行参数,如果想要自定义生成的项目文件来更好地满足需要,可以使用这些参数。通常,这些选项不是必须使用或建议使用的。
| 选项 | 说明 ||
----------------- | ------------ |
-CurrentPlatform | 仅为当前桌面平台Windows或Mac生成可构建项目而不是为所有检测到的目标平台。|
-2015 | 以VS 2015原生格式生成项目。设置该选项后将使用Visual C++ 2015编译器进行编译。|
-2017 | 以VS 2017原生格式生成项目。设置该选项后将使用Visual C++ 2017编译器进行编译。|
-ThirdParty | 将来自第三方库的标头和其他文件添加到项目中。例如如果您想要在Visual Assist中看到PhysX、Steamworks或Bink的符号和文件该选项很有用。但是这样会使项目文件加载时间延长|
-Game `GameName` | 告诉项目生成工具生成仅包含指定项目名称的代码和内容的项目,不包括所有其他发现的项目。确保同时指定项目名称。例如,`GenerateProjectFiles.bat ShooterGame.uproject -Game`将生成仅包含ShooterGame的源代码和目标的项目。如果您想要在一个游戏项目中包含引擎源代码和程序还可以传递`-Engine`参数。|
-Engine | 与`-Game`结合使用时,会在生成的解决方案中包含引擎代码、内容和程序。如果您认为在处理游戏项目时要经常使用引擎源代码,该选项很有用。|
-NoIntelliSense | 跳过生成IntelliSense数据这些是IDE中的自动完成和错误曲线数据。|
-AllLanguages | 包含所有语言的引擎文档。默认情况下,我们在项目中仅包含英语文件。|
-OnlyPublic | 指定后,生成的项目中仅包含引擎模块的公共标头文件。默认情况下,将包含引擎模块的所有源文件。这样可以加快项目加载,但可能更难浏览引擎代码。|
-NoShippingConfigs | 在生成的项目中省略`交付Shipping`和`测试Test`构建配置。这会减少需要处理的目标配置数量。|
-Platforms=`PlatformName`| 覆盖要为其生成可构建项目的默认平台集,为您指定的平台生成项目。您可以用“+”字符分隔来指定多个平台。这样也会使生成的解决方案文件名带有一个包含平台名称的后缀。|
(#frequentlyaskedquestions)
## 常见问题及解答
(#whyarenewly-addedsourcefilescompiledeventhoughididnotupdateprojectfiles?)
### 为什么我还没有更新项目文件,但新添加的源文件也会编译?
UE4构建系统实际上不会要求项目文件编译代码。Unreal Build Tool总是会查找使用模块和目标构建文件的源文件。因此如果您添加了新的源文件并触发编译则即使项目还没有刷新也会在构建中包含这个新的源文件。只需记住这一点即可。
(#wherearetheactualprojectssavedto?)
### 实际项目保存在哪里?
对于VS项目生成的解决方案文件是UE4.sln保存在UE4根目录中。但是项目文件保存在/UE4/Engine/Intermediate/ProjectFiles/目录中。您可以随时删除这些文件并重新生成项目,但是,删除这些文件可能会失去一些特定于项目的偏好设置,例如命令行参数。
(#whataretheadvantagesofgeneratingprojectfiles?)
### 生成项目文件的优势是什么?
一定是有利有弊但我们决定为UE4生成项目文件有一些重要的原因
* UE4是为了配合许多平台而设计的但不同的团队有时可能仅使用少数特定平台。通过生成项目文件我们可以省去不相关的特定于平台的文件和构建配置。
* UE4编程方法融入了许多子模块而且非常重要的是我们尽量减轻程序员添加新模块的操作。
* 项目生成工具会发出高度精准的定义包括您在UE4代码中工作时由VS IntelliSense使用的路径。
* 能够自动生成项目文件,明显简化了设置新项目的过程。
* 我们还希望能够支持多个平台和开发环境例如VS和Xcode。人工维护多个项目文件集容易出错而且任务繁重。
* 我们希望让程序员能够高度定制项目文件。我们也期待这一点会变得越来越重要。
* 源文件的目录结构会自动镜像到项目文件解决方案层级中。这样在浏览源文件时非常方便,但过去对于人工编写的项目而言却非常困难。
* UE4构建配置非常复杂难以人工维护。项目生成工具让这个过程对于开发者而言几乎是透明的。
(#whatarealloftheseotherfilesdoingintheproject?)
### 所有其他文件在项目中有怎样的作用?
除了C++模块的源代码之外,我们还自动在生成的项目中添加了一些其他文件。这只是为了在搜索时便于找到这些文件。下面是添加到所生成项目的一些其他文件示例:
* 着色器源代码(*.usf文件
* 引擎文档文件(*.udn文件
* 程序配置文件(*.ini文件
* 本地化文件(*.int文件
* 程序资源文件和清单(*.rc、.manifest
* 特定外部非生成项目文件如UnrealBuildTool、Clean
(#whyaretherenoprojectfilescheckedintosourcecontrol?)
### 为什么源代码控制中没有检入项目文件?
将源代码控制冲突合并到项目文件非常繁重极易出错。新系统为了完全避免这一点将项目文件视为纯中间文件。此外对于处理不同游戏项目的每个团队而言解决方案文件都有所不同。因此可能存在Epic使用的项目文件不加修改则可能对其他团队没有用处的情况。
(#whatdoesgenerateprojectfiles.batactuallydo?)
### `GenerateProjectFiles.bat`的实际作用是什么?
该脚本只是Unreal Build Tool的一个简单的包装器以特殊模式启动用于构建项目文件而不是构建程序可执行文件。它使用`-ProjectFiles`命令行选项调用Unreal Build Tool。
(#iammakingchangestotheprojectgeneratorcode.howdoidebugit?)
### 我正在更改项目生成工具代码。我该如何调试?
* 将启动项目更改为UnrealBuildTool。
* 将用于调试的命令行参数设为:-ProjectFiles
* 将工作目录设为以下本地路径:[您的UE4目录]/Engine/Source/
* 正常编译和调试。
请注意在您工作时项目生成工具可能会重写您在VS中使用的项目文件。因此将UnrealBuildTool项目直接加载到VS中有时会很有用而不是通过常规的UE4解决方案文件进行调试。
(#howdoibuildmultipleconfigurationsatthesametime?)
### 如何同时构建多个配置?
您可以使用VS中的“批量构建Batch Build”功能。您可以在“构建Build”菜单中找到此功能。只需选择想要编译的所有配置然后单击“构建Build”即可。我们正在寻找方法希望在未来让这个界面变得更易于使用。