ue4 build configuration的解释

ue4的build系统,继承并发展了3代的一如既往的复杂。。

一、每个configuration由两部份组成:【(性能)模式】+【(内容)组成】

模式有:Debug,DebugGame,Development,Shipping,Test

  Debug:引擎和游戏项目都是debug编译,最适合调试,不做任何优化,运行速度也是最慢的

  DebugGame:只有游戏项目用debug,引擎有适度优化,调试时某些变量看不到了

  Development:引擎和游戏项目都优化了,调试时某些变量看不到。运行速度适中,一般开发时都用这个,特别是编辑器也是用的这种模式。

  Shipping:发行版,极致优化,估计调试信息都没了。

  Test:包含额外的测试代码。

组成有:空(Game),Client,Server,Editor

  空:实际意义是【未指定】,也就是默认的意思(而不是什么都没有的空),包含客户端和服务器代码,不包含编辑器。

  Client:只包含客户端

  Server:只包含服务器

  Editor:包含所有三项。

注意:solution层级的“空”对应到project层级的名字是"Game",也就是默认为游戏(而非编辑器)的意思。

所以Debug_Game和DebugGame完全不是一回事,后者实际只是DebugGame_(空)的简化。

二、用launcher下载的预编译版Editor建立的工程,和用源码自编译版Editor建立的工程,结构会不一样。

预编译版Editor的工程只有少数几种configuration,且引擎工程仅用来阅读和调试,不能编译。

源码版工程分两种情况,1是引擎(如上图),包含了全部【模式+组成】的configuration组合,并且在构建时也会编译引擎

2是自己的工程,模式是全的,但组成只有Game和Editor两种,也就是不分纯客户端和纯服务器了

三、一些实现细节:

1、实际的编译是通过命令:

D:\prg\UnrealEngine\Engine\Build\BatchFiles\Build.bat UE4Client Win64 Debug -waitmutex

D:\prg\UnrealEngine\Engine\Build\BatchFiles\Build.bat usbp Win64 Debug "$(SolutionDir)$(ProjectName).uproject" -waitmutex

前者是编引擎,后者是编自己的工程,bat里再调用:

..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -DEPLOY

参数意义如下:

REM %1 is the game name
REM %2 is the platform name
REM %3 is the configuration name

可以对比不同的组合:

Debug_Game:D:\prg\UnrealEngine\Engine\Build\BatchFiles\Build.bat UE4Game Win64 Debug -waitmutex

Debug_Editor:D:\prg\UnrealEngine\Engine\Build\BatchFiles\Build.bat UE4Editor Win64 Debug -waitmutex

DebugGame_Game:D:\prg\UnrealEngine\Engine\Build\BatchFiles\Build.bat UE4Game Win64 DebugGame -waitmutex

2、第1参数game name,表示的是一个UEBuildTarget,即构建目标,所谓目标也就是exe、dll这样的文件,毕竟构建来构建去,最终目的就是生成这些可执行文件。

UEBuildTarget总共有5类,分别由5个子类表示,正好是上面所说的组成里的4类,再加1个叫Program的类(各种命令行工具)

一个UEBuildTarget里包含两类信息,一是包含的模块UEBuildModule,二是构建规则,规则又分两类,即TargetRules和ModuleRules

其中TargetRules就是各相应工程目录下对应*.Target.cs文件描述,比如在Engine/Source目录下,就有4个文件分别对应各自的name,UE4Game/UE4Editor/UE4Client/UE4Server.Target.cs

而ModuleRules则是各*.Build.cs文件

简单来说,一个ModuleRules定义了一个具体的模块文件(exe/dll)怎么构建,比如要编译哪些源文件

而一个TargetRules定义了一个抽象的Target,由哪些模块组合而成,比如说一个Editor,实际对应着一个exe和一堆dll

3、这些不同的UEBuildTarget类型,最直观的差别就是它们分别定义了各自的预处理器宏

如UEBuildEditor里:

OutCPPEnvironmentConfiguration.Definitions.Add("UE_EDITOR=1");

就添加了UE_EDITOR定义,这就会导致代码里大段大段被#if UE_EDITOR扩起来的地方被编译

而在代表纯游戏的UEBuildGame里,就不会编译那些代码,以减少体积和开销。

时间: 2024-12-08 14:15:16

ue4 build configuration的解释的相关文章

Xcode添加build configuration

图片转载自:Adding a build configuration in Xcode Xcode添加build configuration,布布扣,bubuko.com

simplified build configuration

http://blogs.msdn.com/b/saraford/archive/2005/08/16/452411.aspx Did you know… That you can hide the solution and advanced build configurations Under Tools – Options – Projects and Solutions – General, there are options for both Always show solution a

Xcode的多种Build Configuration

一: 建多个Configuration的目的. 多套域名打包. 1 开发时的域名. 2 内测时的域名. 3 公测时的域名. 4 企业版的域名. 5 APP Store的域名. 通过注释的方式,容易出错.因此推荐使用多Configuration.不同的环境使用不同的域名. 二: 配置Configuration 1 添加Configuration PROJECT -> Info -> Configurations 2 查看添加的Configuration Edit Scheme -> run

ant中build.xml文件解释

下边就是一个完整的build.xml,然后我们来详细的解释每一句<?xml version="1.0" encoding="UTF-8" ?><project name="HelloWorld" default="run" basedir="."><property name="src" value="src"/><prope

Select a provisioning profile for the &quot;Debug&quot; build configuration in the project editor.

今天打开厂商的示例demo 遇到这个问题, 解决方式主要是在 Build Setting 选项卡下 Code Signing Identity 选择为 iOS Developer,开始的时候貌似是厂商的开发者的ID: 然后在 General 选项卡下面,把 Identity 里面的 Bundle Identifier 改成新的,之前的那个已经被注册到人家的ID 下面了,我们需要给它一个新的值绑定到我们自己的 ID 下面. 然后下面 Signing 把 Automatically manage s

UE4 编译虚幻引擎

WINDOWS On this page: 设置虚幻引擎 编译虚幻引擎 编译配置 对象平台 二进制文件命名规则 编译引擎 设置虚幻引擎 在继续前请确认您使用的是Microsoft Visual Studio 2013. 在您使用虚幻引擎大干一场之前,先完成几个基本设置步骤: 运行根目录下的GenerateProjectFiles.bat批处理文件. 所有的项目文件,甚至虚幻引擎4解决方案都为中间文件-位于[UE4Root]\Engine\Intermediate\ProjectFiles.您必须

vue中使用echarts来绘制中国地图,NuxtJS制作疫情地图,内有详细注释,我就懒得解释了,vue cli制作疫情地图 代码略有不同哦~~~

我的代码自我感觉----注释一向十分详细,就不用过多解释都是什么了~~ 因为最近疫情期间在家实在是没事干,想找点事,就练手了个小demo 首先上 NuxtJs版本代码,这里面 export default { mode: 'universal', /* ** Headers of the page */ head: { title: process.env.npm_package_name || '', meta: [ { charset: 'utf-8' }, { name: 'viewpor

Tensorflow Windows Build with GPU Support

Step-by-step Windows build 虽然Research一直在用Caffe,而且用的飞起,但还是很关注tensorflow社区的事情,最近发现TF有windows版本的了,就自己试了试. 步骤:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/cmake Pre-requisites: Microsoft Windows 10 Microsoft Visual Studio Enter

Streams Studio配置Build options

Defining build options You can change the build options of the internal builder for building an SPL application using the InfoSphere® Streams Studio. About this task When you create a stand-alone build configuration or a distributed build configurati