summaryrefslogtreecommitdiffstats
path: root/Source/cmVisualStudio10TargetGenerator.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-09-07 14:12:18 (GMT)
committerBrad King <brad.king@kitware.com>2009-09-07 14:12:18 (GMT)
commit4e16813f63bae65dd3eeec0a326e9a4926aff1c5 (patch)
tree27eb0f6207480c3b6bccb335bcf4d1be0df2ceca /Source/cmVisualStudio10TargetGenerator.h
parent4224513ccee04d540e89db5cf1ca531b6ef8e0e5 (diff)
downloadCMake-4e16813f63bae65dd3eeec0a326e9a4926aff1c5.zip
CMake-4e16813f63bae65dd3eeec0a326e9a4926aff1c5.tar.gz
CMake-4e16813f63bae65dd3eeec0a326e9a4926aff1c5.tar.bz2
Put custom commands in topological order for VS 10
Visual Studio 10 uses MSBuild to drive the build. Custom commands appear in MSBuild files inside CustomBuild elements, which appear inside ItemGroup elements. The Outputs and AdditionalInputs elements of each CustomBuild element are evaluated according to timestamps on disk. MSBuild does not use inputs/outputs to order CustomBuild steps within a single ItemGroup or across multiple ItemGroup elements. Instead we must put only unrelated CustomBuild elements in a single ItemGroup and order the item groups from top to bottom using a topological order of the custom command dependency graph. This fixes CustomCommand and ExternalProject test failures, so we remove the expectation of these failures.
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.h')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h
index 7039cfb..f61cad2 100644
--- a/Source/cmVisualStudio10TargetGenerator.h
+++ b/Source/cmVisualStudio10TargetGenerator.h
@@ -66,6 +66,7 @@ private:
void WriteCustomRule(cmSourceFile* source,
cmCustomCommand const & command);
void WriteCustomCommands();
+ void WriteCustomCommand(cmSourceFile* sf);
void WriteGroups();
void WriteProjectReferences();
bool OutputSourceSpecificFlags(cmSourceFile* source);
@@ -89,6 +90,7 @@ private:
cmGlobalVisualStudio7Generator* GlobalGenerator;
cmGeneratedFileStream* BuildFileStream;
cmLocalVisualStudio7Generator* LocalGenerator;
+ std::set<cmSourceFile*> SourcesVisited;
};
#endif