You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
152 lines
9.6 KiB
Plaintext
152 lines
9.6 KiB
Plaintext
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]
|
||
|
||
如果您下载的是最新版虚幻引擎4(UE4)代码,可能会注意到其中不包含用于编译和运行引擎或示例游戏的Visual Studio(VS)或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)”即可。我们正在寻找方法,希望在未来让这个界面变得更易于使用。
|
||
|
||
|