UE4中 -skipbuild -nocompile 有什么区别

news/2024/11/17 19:52:54/

在项目开发中,我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中,有 -skipbuild、 -nocompile 两个很像的参数,于是想探究一下它们的区别与含义。

-skipbuild 参数

到底有没有 -skipbuild 这个参数?根据 https://blog.csdn.net/u010385624/article/details/89916184 的介绍,有skip这个参数,但没有搜索到 -skipbuild 这个参数。我们可以在 AutomationTool.ProjectParams 看到所有的命令行传参,其中只有

CommandUtils.LogLog("Build={0}", Build);

CommandUtils.LogLog("SkipBuildClient={0}", SkipBuildClient);

CommandUtils.LogLog("SkipBuildEditor={0}", SkipBuildEditor);

但是,在这里发现了有skipbuild开关。

this.Build = GetParamValueIfNotSpecified(Command, Build, this.Build, "build");
bool bSkipBuild = GetParamValueIfNotSpecified(Command, null, false, "skipbuild");
if (bSkipBuild)
{this.Build = false;
}

验证方式:如果同时传 -skipbuild 和 -build ,就会发现后文中的 Project.Build 无法进入到Build方法中。

-build 开关的含义

AutomationTool.ProjectParams.Build

作用1:AutomationTool.ProjectParams.AutodetectSettings

else if (!this.Build) // 如果不选build,那么就自动重置Target
{var ShortName = ProjectUtils.GetShortProjectName(RawProjectPath);GameTarget = Client ? (ShortName + "Client") : ShortName;EditorTarget = ShortName + "Editor";ServerTarget = ShortName + "Server";
}

作用2:一个限制验证(AutomationTool.ProjectParams.Validate),具体含义暂不解释。

if (Build && !HasCookedTargets && !HasEditorTargets && !HasProgramTargets)
{throw new AutomationException("-build is specified but there are no targets to build.");
}

作用3:决定了是否运行 Project.Build。对应的日志是:

********** BUILD COMMAND STARTED **********

调试时的注意事项

根据我之前写的博文(UE4如何调试BuildCookRun_ue 的 automationtool如何debug-CSDN博客), UAT的调试对应的是:

要注意,只有BuildCookRun命令才有ProjectParams的解析,而UBT的调试中,不会涉及ProjectParams 的解析,因此调试时不要断点到那里去了。

未完待续


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

相关文章

React 面试问题以及简要答案

1. 什么是 React? React 是一个 JavaScript 库,用于构建用户界面,特别是数据随时间变化的单页应用程序。它允许开发人员创建可以高效更新和渲染的大型 Web 应用程序。 2. React 的主要特点是什么? JSX:允许将 HTML …

Python知识点:如何使用Flink与Python进行实时数据处理

开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 如何使用Flink与Python进行实时数据处理 Apache Flink是一个流处理框架&#xf…

力扣面试经典150题——合并两个有序数组

目录 题目链接: 题目描述 示例 提示: 解法一:合并数组排序 Java写法: 运行时间 C写法: 运行时间 时间复杂度和空间复杂度 解法二:双指针 Java写法: 运行时间 C写法: 运…

三小时快速上手TypeScript,TS速通教程(上篇、中篇、下篇、附加篇)

TypeScript速通 Typescript简介为什么需要TypeScriptJavaScript今非昔比JavaScript中的困扰1. 不清不楚的数据类型2. 有漏洞的逻辑3. 访问不存在的属性4. 低级的拼写错误 TypeScript静态类型检查 编译 TypeScript1. 命令行编译2. 自动化编译 类型声明类型推断类型总览JavaScrip…

2025 年 IT 前景:机遇与挑战并存,人工智能和云计算成重点

云计算de小白 投资人工智能:平衡潜力与实用性 到 2025 年,人工智能将成为 IT 支出的重要驱动力,尤其是在生成式人工智能领域。人工智能的前景在于它有可能彻底改变业务流程、增强决策能力并开辟新的收入来源。然而,现实情况更加微…

timedatectl命令:告别时间烦恼,一键同步系统时间

一、命令简介 ​timedatectl​ 命令用于查看和设置系统的时间和日期,以及配置时区和 NTP(Network Time Protocol)设置。 相关命令:cal ​显示日历、 date ​查看、设置日期 ‍ 二、命令参数 格式: timedatectl […

在线翻译器工具横评:性能、准确率大比拼

无论是旅行者在异国他乡探寻风土人情,学者研究国外的前沿学术成果,还是商务人士与国际伙伴洽谈合作,都离不开一种高效、准确的语言沟通工具。而翻译器在线翻译能很好的帮我们解决这个问题。今天我们一起来探讨有那些好用的翻译工具。 1.福昕…

基于 RealSense D435相机实现手部姿态检测

基于 RealSense D435i相机进行手部姿态检测,其中采用 Mediapipe 进行手部检测,以下是详细步骤: Mediapipe 是一个由 Google开发的开源框架,专门用于构建多媒体处理管道,特别是计算机视觉和机器学习任务。它提供了一系列…