in Utilities/CMake/ProjectFileProcessor/Program.cs [93:208]
static void Main(string[] args)
{
string rootFolder = null;
if (args.Length == 0)
rootFolder = @"C:\git\forks\xbox-live-api";
else
rootFolder = args[0];
if (args.Length == 4 && args[1] == "diff")
{
string fileOld = args[2];
string fileNew = args[3];
DiffFiles(fileOld, fileNew, rootFolder);
return;
}
var fileNodes = new List<FileNode>();
// UWP
fileNodes.Add(new FileNode
{
cmake_vcxproj = @"libHttpClient.UWP.C.vcxproj",
template = @"template-libHttpClient.UWP.C.vcxproj",
toolsets = new List<string>{ "140", "141", "142" }
});
// Win32
fileNodes.Add(new FileNode
{
cmake_vcxproj = @"libHttpClient.Win32.C.vcxproj",
template = @"template-libHttpClient.Win32.C.vcxproj",
toolsets = new List<string>{ "140", "141", "142", "143" }
});
// XDK
fileNodes.Add(new FileNode
{
cmake_vcxproj = @"libHttpClient.XDK.C.vcxproj",
template = @"template-libHttpClient.XDK.C.vcxproj",
toolsets = new List<string>{ "140", "141", "142" }
});
// TAEF UnitTests
fileNodes.Add(new FileNode
{
cmake_vcxproj = @"libHttpClient.UnitTest.TAEF.vcxproj",
template = @"template-libHttpClient.UnitTest.TAEF.vcxproj",
toolsets = new List<string>{ "142" }
});
// TE UnitTests
fileNodes.Add(new FileNode
{
cmake_vcxproj = @"libHttpClient.UnitTest.TE.vcxproj",
template = @"template-libHttpClient.UnitTest.TE.vcxproj",
toolsets = new List<string>{ "142" }
});
// GDK
fileNodes.Add(new FileNode
{
cmake_vcxproj = @"libHttpClient.GDK.C.vcxproj",
template = @"template-libHttpClient.GDK.C.vcxproj",
toolsets = new List<string>{ "141", "142", "143" }
});
foreach (FileNode fn in fileNodes)
{
foreach (var toolset in fn.toolsets)
{
var template_lines = new List<string>();
var output_lines = new List<string>();
var cmake_vcxproj_lines = new List<string>();
var cmake_vcxproj_filters_lines = new List<string>();
var cmake_vcxproj_filters_lines_filtered = new List<string>();
var cmake_vcxproj_files = new List<string>();
string cmake_vcxproj = Path.Combine(rootFolder, Path.Combine(@"Utilities\CMake\vcxprojs", fn.cmake_vcxproj));
string cmake_vcxproj_filters_name = fn.cmake_vcxproj + ".filters";
string cmake_vcxproj_filters = Path.Combine(rootFolder, Path.Combine(@"Utilities\CMake\vcxprojs", cmake_vcxproj_filters_name));
string template = Path.Combine(rootFolder, Path.Combine(@"Utilities\CMake", fn.template));
string output_vcxproj = fn.cmake_vcxproj.Replace("libHttpClient", "libHttpClient." + toolset);
string output_directory = @"Build\" + output_vcxproj.Replace(".vcxproj", "");
string output = Path.Combine(rootFolder, Path.Combine(output_directory, output_vcxproj));
string outputFilterName = output_vcxproj + ".filters";
string output_filters = Path.Combine(rootFolder, Path.Combine(output_directory, outputFilterName));
FileInfo fiInput = new FileInfo(cmake_vcxproj);
FileInfo fiInputFilters = new FileInfo(cmake_vcxproj_filters);
Console.WriteLine("inputVcxproj: " + cmake_vcxproj);
Console.WriteLine("template: " + template);
Console.WriteLine("output: " + output);
if (fiInput.Exists && fiInputFilters.Exists)
{
ReadFile(cmake_vcxproj, ref cmake_vcxproj_lines);
ReadFile(cmake_vcxproj_filters, ref cmake_vcxproj_filters_lines);
ExtractFileSection(ref cmake_vcxproj_lines, ref cmake_vcxproj_files, rootFolder, false);
ReadFile(template, ref template_lines);
ReplaceFileSection(template_lines, cmake_vcxproj_files, ref output_lines);
ReplaceToolset(ref output_lines, toolset);
Console.WriteLine("Writing " + output);
WriteFile(output_lines, output);
cmake_vcxproj_filters_lines_filtered = ProcessFiltersFile(cmake_vcxproj_filters_lines, cmake_vcxproj_filters_lines_filtered, rootFolder, output_vcxproj);
Console.WriteLine("Writing " + output_filters);
WriteFile(cmake_vcxproj_filters_lines_filtered, output_filters);
}
else
{
Console.WriteLine("Skipping");
}
Console.WriteLine("");
}
}
}