From 973df7c0e94f0bbc0403c6e2038363a75bb81bca Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 7 Oct 2010 09:54:24 -0400 Subject: VS10: Order .vcxproj dependencies deterministically (#10502) This avoids needless modification of the project files during regeneration. --- Source/cmGlobalVisualStudioGenerator.h | 16 ++++++++-------- Source/cmVisualStudio10TargetGenerator.cxx | 7 +++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h index daa6b3a..c8ea339 100644 --- a/Source/cmGlobalVisualStudioGenerator.h +++ b/Source/cmGlobalVisualStudioGenerator.h @@ -69,14 +69,6 @@ public: i.e. "Can I build Debug and Release in the same tree?" */ virtual bool IsMultiConfig() { return true; } -protected: - // Does this VS version link targets to each other if there are - // dependencies in the SLN file? This was done for VS versions - // below 8. - virtual bool VSLinksDependencies() const { return true; } - - virtual const char* GetIDEVersion() = 0; - struct TargetCompare { bool operator()(cmTarget const* l, cmTarget const* r) const; @@ -87,6 +79,14 @@ protected: OrderedTargetDependSet(cmGlobalGenerator::TargetDependSet const&); }; +protected: + // Does this VS version link targets to each other if there are + // dependencies in the SLN file? This was done for VS versions + // below 8. + virtual bool VSLinksDependencies() const { return true; } + + virtual const char* GetIDEVersion() = 0; + virtual bool ComputeTargetDepends(); class VSDependSet: public std::set {}; class VSDependMap: public std::map {}; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9c0364b..524be8b 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1479,10 +1479,13 @@ void cmVisualStudio10TargetGenerator::WriteEvent( void cmVisualStudio10TargetGenerator::WriteProjectReferences() { - cmGlobalGenerator::TargetDependSet const& depends + cmGlobalGenerator::TargetDependSet const& unordered = this->GlobalGenerator->GetTargetDirectDepends(*this->Target); + typedef cmGlobalVisualStudioGenerator::OrderedTargetDependSet + OrderedTargetDependSet; + OrderedTargetDependSet depends(unordered); this->WriteString("\n", 1); - for( cmGlobalGenerator::TargetDependSet::const_iterator i = depends.begin(); + for( OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) { cmTarget* dt = *i; -- cgit v0.12