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
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);
}