1>------ 已启动清理: 项目: Test1, 配置: Debug x64 ------
1>Cleaning Test1 and UnrealHeaderTool binaries...
1>UnrealBuildTool : error : Unhandled exception: System.NullReferenceException: 未将对象引用设置到对象的实例。
1> 在 UnrealBuildTool.RulesAssembly.CreateTargetRules(String TargetName, UnrealTargetPlatform Platform, UnrealTargetConfiguration Configuration, String Architecture, FileReference ProjectFile, CommandLineArguments Arguments) 位置 D:\0_WorkSpace\UEYaksueTest\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:行号 599
1> 在 UnrealBuildTool.RulesAssembly.CreateTargetRules(String TargetName, UnrealTargetPlatform Platform, UnrealTargetConfiguration Configuration, String Architecture, FileReference ProjectFile, CommandLineArguments Arguments) 位置 D:\0_WorkSpace\UEYaksueTest\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:行号 614
1> 在 UnrealBuildTool.CleanMode.Execute(CommandLineArguments Arguments) 位置 D:\0_WorkSpace\UEYaksueTest\Engine\Source\Programs\UnrealBuildTool\Modes\CleanMode.cs:行号 94
1> 在 UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray) 位置 D:\0_WorkSpace\UEYaksueTest\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:行号 517
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(39,5): error MSB3073: 命令“..\..\Build\BatchFiles\Clean.bat Test1 Win64 Development -WaitMutex -FromMsBuild”已退出,代码为 -1。
1>已完成生成项目“Test1.vcxproj”的操作 - 失败。
========== 清理: 成功 0 个,失败 1 个,跳过 0 个 ==========
目前还没有解决这一问题,可能和UnrealHeaderTool 有关,待后续观察。
我想观察UE4是怎么编译的,于是查阅官方文档,了解到UE4有一套自己的编译工具:UnrealBuildTool,简称UBT。关于UBT的官方文档参阅:虚幻编译工具。我想尝试自己手动建立一个使用UBT进行编译的空白工程。不过首先,先了解下UBT的编译流程中一些文件所扮演的角色UBT的编译流程中一些文件所扮演的角色模块每个模块都由一个 .build.cs 文件声明,它存储在 Source 目录下...
实现步骤:
1. PyCharm, IDE有个Project setting图标,是给run图标做配置的,配置run file为myfile.py2.复制代码 代码如下:# ————————————–#! /usr/bin/python# File: myfile.py# Author: Michael Fan
from make.py import do
def main():do()
if __name__ == ‘__main__’:main()# ————————————–
复制代码 代码如下:mic@ubt: ~$ ls> make.py myfile.py
mic@ubt:
原因分析:方法对应的程序集所引用组件对应的dll文件与项目文件XXX.csproj中记录的Version,PublicKeyToken等信息不对应
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</
源码编译UE4时,执行源码中的批处理文件,会出现下面错误
原因:系统上安装的VS版本是community版本不是express版本
解决方法:卸载掉community版本安装express版本的VS
经过前面几篇博客,我已经了解到了宏在UE4中的重要作用,印象最深的是:它让很多地方的代码写得更简洁优雅(虽然这造成了可读性的下降)。除此之外,它还起到了控制代码路线的作用,例如在上一篇博客《【UE4源代码观察】观察 UE_LOG》中的:
#if WITH_APPLICATION_CORE
GError = FPlatformApplicationMisc::GetErrorOutputDe...
在之前的博客《【UE4源代码观察】手动建立一个使用UBT进行编译的空白工程》中我尝试动手搭建了一个用UBT进行编译的空白的工程。但是对UBT其中的逻辑并不理解。
后来在学习UE4源代码的过程中,又了解了它的一些行为。目前,对我影响较大的是:1.他会有一些逻辑去添加一些宏。2.他会有一些逻辑去给修改ModuleRules(和.build.cs中内容的角色一样)。这时候我发现一些和预期不太一样的行为,因此就有了调试的需求。
所幸,步骤很简单:
1.获得命令行参数
UBT的参数最基本上是一个Targe