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