Bam.Core.IBuilderPostExecute.PostExecute( Bam.Core.DependencyNodeCollection executedNodes) { Bam.Core.Log.DebugMessage("PostExecute for QMakeBuilder"); if (0 == executedNodes.Count) { Bam.Core.Log.Info("No QMake pro file written as there were no targets generated"); return; } // find all nodes with the same unique name var similarNodes = new System.Collections.Generic.Dictionary <string, Bam.Core.Array <QMakeData> >(); foreach (var node in executedNodes) { if (null == node.Data) { Bam.Core.Log.DebugMessage("*** Null data for node {0}", node.UniqueModuleName); continue; } if (similarNodes.ContainsKey(node.UniqueModuleName)) { similarNodes[node.UniqueModuleName].Add(node.Data as QMakeData); } else { similarNodes[node.UniqueModuleName] = new Bam.Core.Array <QMakeData>(node.Data as QMakeData); } } foreach (var keyPair in similarNodes) { Bam.Core.Log.DebugMessage("{0} : {1} nodes", keyPair.Key, keyPair.Value.Count); QMakeData.Write(keyPair.Value); } #if false var mainPackage = Bam.Core.State.PackageInfo[0]; var proFileName = mainPackage + ".pro"; var rootDirectory = Bam.Core.State.BuildRoot; var proFilePath = System.IO.Path.Combine(rootDirectory, proFileName); // relative paths need a trailing slash to work rootDirectory += System.IO.Path.DirectorySeparatorChar; using (var proWriter = new System.IO.StreamWriter(proFilePath)) { proWriter.WriteLine("# -- Generated by BuildAMation --"); proWriter.WriteLine("TEMPLATE = subdirs"); proWriter.WriteLine("CONFIG += ordered"); proWriter.WriteLine("SUBDIRS += \\"); foreach (var collection in similarNodes.Values) { var data = collection[0]; if (data.ProFilePath != null) { var subDirProjectDir = System.IO.Path.GetDirectoryName(data.ProFilePath) + System.IO.Path.DirectorySeparatorChar; var relativeDir = Bam.Core.RelativePathUtilities.GetPath(subDirProjectDir, rootDirectory); relativeDir = relativeDir.TrimEnd(System.IO.Path.DirectorySeparatorChar); proWriter.WriteLine("\t{0}\\", relativeDir.Replace('\\', '/')); } } } Bam.Core.Log.Info("Successfully created QMake .pro file for package '{0}'\n\t{1}", Bam.Core.State.PackageInfo[0].Name, proFilePath); #endif }