GenerateProjectFiles.bat分析

1. 实际是调用了Engine\Build\BatchFiles\GenerateProjectFiles.bat
2. 然后调用Engine\Build\BatchFiles\GetMSBuildPath.bat
3. 依次查找2017,2015,2013 vs的MSBuild.exe,首先找到哪个版本的MSBuild.exe就直接成功退出
4. 调用MSBuild.exe生成UnrealBuildTool
MSBuild.exe /nologo /verbosity:quiet Programs\UnrealBuildTool\UnrealBuildTool.csproj /property:Configuration=Development /property:Platform=AnyCPU /target:Build
5. 调用UnrealBuildTool.exe生成UE4工程文件
Binaries\DotNET\UnrealBuildTool.exe -ProjectFiles
6. 如果想修改生成的vs版本的sln文件,在生成sln文件的时候加上版本参数即可
Binaries\DotNET\UnrealBuildTool.exe -ProjectFiles -2013

7. 在UnrealBuildTool工程的UnrealBuildTool.cs的main函数中的DoPostStartupStuffThatCanAccessConfigs可以看到下面代码,版本命令参数就是从这里看到的

else if (LowercaseArg.StartsWith("-projectfile"))
{
	if(Arguments.Contains("-2012unsupported", StringComparer.InvariantCultureIgnoreCase))
	{
		VCProjectFileGenerator.Version = VCProjectFileFormat.VisualStudio2012;
	}
	else if (Arguments.Contains("-2013"))
	{
		VCProjectFileGenerator.Version = VCProjectFileFormat.VisualStudio2013;
		VCProjectFile.BuildToolOverride = " -2013";
	}
	else if(Arguments.Contains("-2015"))
	{
		VCProjectFileGenerator.Version = VCProjectFileFormat.VisualStudio2015;
		VCProjectFile.BuildToolOverride = " -2015";
	}
	else if(Arguments.Contains("-2017"))
	{
		VCProjectFileGenerator.Version = VCProjectFileFormat.VisualStudio2017;
		VCProjectFile.BuildToolOverride = " -2017";
	}
	ProjectFileTypes.Add(ProjectFileType.VisualStudio);
}


猜你喜欢

转载自blog.csdn.net/sukhoi27smk/article/details/79938860
bat