Browse Source

Set SolutionPath environment variable when building C++ projects.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3234 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
851fa495d7
  1. 28
      samples/CppBackendBinding/CppProject.cs
  2. 4
      samples/CppBackendBinding/FileGroup.cs

28
samples/CppBackendBinding/CppProject.cs

@ -79,13 +79,21 @@ namespace CppBackendBinding @@ -79,13 +79,21 @@ namespace CppBackendBinding
}
foreach (FileItem item in items) {
FileGroup group = groups.Find(fg => fg.ItemType == item.ProjectItem.ItemType);
if (groups != null) {
if (group != null) {
group.XmlElement.AppendChild(item.XmlElement);
} else {
LoggingService.Warn("Couldn't find filter for item type " + item.ProjectItem.ItemType + ", the item was not saved!");
}
}
document.Save(fileName);
using (XmlWriter writer = XmlWriter.Create(fileName, new XmlWriterSettings {
NewLineOnAttributes = true,
Indent = true,
IndentChars = "\t",
Encoding = Encoding.Default
}))
{
document.Save(writer);
}
}
}
@ -113,6 +121,17 @@ namespace CppBackendBinding @@ -113,6 +121,17 @@ namespace CppBackendBinding
}
}
public override ItemType GetDefaultItemType(string fileName)
{
string extension = Path.GetExtension(fileName);
if (string.Equals(extension, ".c", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".cpp", StringComparison.OrdinalIgnoreCase))
return ItemType.Compile;
else if (string.Equals(extension, ".h", StringComparison.OrdinalIgnoreCase))
return ItemType.Header;
else
return base.GetDefaultItemType(fileName);
}
#region IProjectAllowChangeConfigurations
// TODO: Configuration/Platform handling
bool IProjectAllowChangeConfigurations.RenameProjectConfiguration(string oldName, string newName)
@ -222,6 +241,7 @@ namespace CppBackendBinding @@ -222,6 +241,7 @@ namespace CppBackendBinding
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.EnvironmentVariables["VCBUILD_DEFAULT_CFG"] = options.Configuration + "|" + options.Platform;
p.StartInfo.EnvironmentVariables["SolutionPath"] = ParentSolution.Directory;
p.EnableRaisingEvents = true;
p.OutputDataReceived += delegate(object sender, DataReceivedEventArgs e) {
@ -229,7 +249,7 @@ namespace CppBackendBinding @@ -229,7 +249,7 @@ namespace CppBackendBinding
BuildError error = ParseError(e.Data);
if (error != null)
feedbackSink.ReportError(error);
// else
else
feedbackSink.ReportMessage(e.Data);
}
};
@ -238,7 +258,7 @@ namespace CppBackendBinding @@ -238,7 +258,7 @@ namespace CppBackendBinding
BuildError error = ParseError(e.Data);
if (error != null)
feedbackSink.ReportError(error);
// else
else
feedbackSink.ReportError(new BuildError(null, e.Data));
}
};

4
samples/CppBackendBinding/FileGroup.cs

@ -23,6 +23,10 @@ namespace CppBackendBinding @@ -23,6 +23,10 @@ namespace CppBackendBinding
public FileGroup(CppProject project, XmlElement filterElement)
{
if (project == null)
throw new ArgumentNullException("project");
if (filterElement == null)
throw new ArgumentNullException("filterElement");
this.Project = project;
this.XmlElement = filterElement;
switch (filterElement.GetAttribute("UniqueIdentifier")) {

Loading…
Cancel
Save