in Sharpmake.Generators/VisualStudio/Androidproj.cs [259:357]
private void GenerateFilesSection(
GenerationContext context,
IFileGenerator fileGenerator)
{
Strings projectFiles = context.Project.GetSourceFilesForConfigurations(context.ProjectConfigurations);
// Add source files
var allFiles = new List<Vcxproj.ProjectFile>();
var includeFiles = new List<Vcxproj.ProjectFile>();
var sourceFiles = new List<Vcxproj.ProjectFile>();
var contentFiles = new List<Vcxproj.ProjectFile>();
foreach (string file in projectFiles)
{
var projectFile = new Vcxproj.ProjectFile(context, file);
allFiles.Add(projectFile);
}
allFiles.Sort((l, r) => { return string.Compare(l.FileNameProjectRelative, r.FileNameProjectRelative, StringComparison.InvariantCultureIgnoreCase); });
// type -> files
var customSourceFiles = new Dictionary<string, List<Vcxproj.ProjectFile>>();
foreach (var projectFile in allFiles)
{
string type = null;
if (context.Project.ExtensionBuildTools.TryGetValue(projectFile.FileExtension, out type))
{
List<Vcxproj.ProjectFile> files = null;
if (!customSourceFiles.TryGetValue(type, out files))
{
files = new List<Vcxproj.ProjectFile>();
customSourceFiles[type] = files;
}
files.Add(projectFile);
}
else if (context.Project.SourceFilesCompileExtensions.Contains(projectFile.FileExtension) ||
(string.Compare(projectFile.FileExtension, ".rc", StringComparison.OrdinalIgnoreCase) == 0))
{
sourceFiles.Add(projectFile);
}
else if (string.Compare(projectFile.FileExtension, ".h", StringComparison.OrdinalIgnoreCase) == 0)
{
includeFiles.Add(projectFile);
}
else
{
contentFiles.Add(projectFile);
}
}
// Write header files
if (includeFiles.Count > 0)
{
fileGenerator.Write(Template.Project.ProjectFilesBegin);
foreach (var file in includeFiles)
{
using (fileGenerator.Declare("file", file))
fileGenerator.Write(Template.Project.ProjectFilesHeader);
}
fileGenerator.Write(Template.Project.ProjectFilesEnd);
}
// Write content files
if (contentFiles.Count > 0)
{
fileGenerator.Write(Template.Project.ProjectFilesBegin);
foreach (var file in contentFiles)
{
using (fileGenerator.Declare("file", file))
fileGenerator.Write(Template.Project.ContentSimple);
}
fileGenerator.Write(Template.Project.ProjectFilesEnd);
}
// Write Android project files
fileGenerator.Write(Template.Project.ItemGroupBegin);
if (_isGradleBuild)
{
foreach (var file in context.AndroidPackageProject.GradleTemplateFiles)
{
using (fileGenerator.Declare("gradleTemplateFile", file))
fileGenerator.Write(Template.Project.GradleTemplate);
}
}
else
{
using (fileGenerator.Declare("antBuildXml", context.AndroidPackageProject.AntBuildXml))
using (fileGenerator.Declare("antProjectPropertiesFile", context.AndroidPackageProject.AntProjectPropertiesFile))
using (fileGenerator.Declare("androidManifest", context.AndroidPackageProject.AndroidManifest))
{
fileGenerator.Write(Template.Project.AntBuildXml);
fileGenerator.Write(Template.Project.AndroidManifest);
fileGenerator.Write(Template.Project.AntProjectPropertiesFile);
}
}
fileGenerator.Write(Template.Project.ItemGroupEnd);
}