【UE5 C++】UBT与UHT

news/2025/1/15 18:01:25/

在这里插入图片描述

UE有一组用于自动执行编译虚幻引擎过程的工具,包括 虚幻编译工具(UnrealBuildTool)虚幻头工具(UnrealHeaderTool)(以及其他工具)。实现这一套工具的目的是为了简化多平台编译,方便你配置各个平台的参数和编译选项

Build.cs

描述每个模块的环境依赖信息,表示项目所用到的模块
可以看到,默认是带有Core、CoreUObject、Engine、InputCore模块
引擎刚创建VS的时候会默认带有这些模块
在这里插入图片描述

Target.cs

为目的平台所进行的一些设置或者是特定平台进行的一些设置,它可以包含一些头文件,或者是一些库或者是一些编译器
在这里插入图片描述

Target.cs,Build.cs都是为UBT服务的

UnrealBuildTool (UBT)

编译每个模块并处理相关依赖

UnrealHeadTool(UHT)

收集头文件,编译后生成反射数据,这些反射数据会生成一个generated.h或者generate.cpp文件
当头文件发生变化时,虚幻引擎内部调用UHT生成新的反射数据然后存储在generated.cpp或者generated.h文件中

UBT和UHT的协作

我们要知道,我们写的UE4代码不是标准的C++代码,是基于UE4源代码层层改装了很多层的(如反射),所以,UHT将UE4代码转化成标准的C++代码,而UBT负责调用UHT来实现这个转化工作的,转化完以后,UBT调用标准C++代码的编译器来将UHT转化后的标准C++代码完全编译成二进制文件,整体上看,UHT是UBT的编译流程的一部分


参考:
https://zhuanlan.zhihu.com/p/400473355
https://www.bilibili.com/video/BV1Dc411f7nx?p=3&vd_source=abf3407e623fe554d6fad989b8955a48


http://www.ppmy.cn/news/1413409.html

相关文章

zabbix监控警告

监控概述 对服务的管理,不能仅限于可用性。 还需要服务可以安全、稳定、高效地运行。 监控的目的:早发现、早治疗。 被监控的资源类型: 公开数据:对外开放的,不需要认证即可获取的数据 私有数据:对外不…

MySQL innoDB存储引擎多事务场景下的事务执行情况

一、背景 在日常开发中,对不同事务之间的隔离情况等理解如果不够清晰,很容易导致代码的效果和预期不符。因而在这对一些存在疑问的场景进行模拟。 下面的例子全部基于innoDB存储引擎。 二、场景: 2.1、两个事务修改同一行记录 正常来说&…

(27)4.8 习题课

#include<stdio.h> #include<string.h> #include<assert.h> #include<math.h> 1.//my_memmove制作 void* my_memmove(void* dest, void* src, size_t num) { assert(dest && src); void* ret dest; if (dest < src) { …

Bert基础(十二)--Bert变体之知识蒸馏原理解读

B站视频&#xff1a;https://www.bilibili.com/video/BV1nx4y1v7F5/ 白话知识蒸馏 在前面&#xff0c;我们了解了BERT的工作原理&#xff0c;并探讨了BERT的不同变体。我们学习了如何针对下游任务微调预训练的BERT模型&#xff0c;从而省去从头开始训练BERT的时间。但是&#…

MySQL数据库——6、删除数据表

在 MySQL 数据库删除数据表 删除一个数据表&#xff0c;使用 SQL 命令 DROP TABLE。 DROP TABLE 命令允许从数据库中永久删除指定的数据表及其所有数据。 DROP TABLE table_name; table_name 是要删除的数据表的名称。 例如&#xff0c;要删除名为 users 的数据表&#xf…

[Java基础揉碎]Arrays类

目录 Arrays常见方法 1) toString返回数组的字符串形式 Arrays.toString(arr) 2) sort 排序(自然排序和定制排序) Integer arr[] {1,-1,7,0,89}; 定制排序 查看源码 冒泡排序 3) binarySearch 通过二分搜索法进行查找下标&#xff0c;要求必须排好序 int index Arra…

第四次面试总结 — 嘉和智能 - 全栈开发

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ&#xff1b;) 专栏 —— 本人真实面经&#xff0c;更多真实面试经验&#xff0c;中大厂面试总结等您挖掘 目录 总结&#xff08;非详细&#xff09; 面试内…

vue动态绑定class的几种方法

一、对象语法 1、给v-bind:class 设置一个对象&#xff0c;可以动态地切换class&#xff0c;例如&#xff1a; <div id"app"><div :class"{active:isActive}"></div> </div> <script> var app new Vue({el:#app,data:{isA…