diff options
author | Brad King <brad.king@kitware.com> | 2010-10-07 13:54:24 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2010-10-07 13:54:24 (GMT) |
commit | 973df7c0e94f0bbc0403c6e2038363a75bb81bca (patch) | |
tree | ca12029ab244ed0274d9b6ca9a0dd2916f3709eb /Source | |
parent | ba3064b5848a994765d5fbf76ff516cd98f4465f (diff) | |
download | CMake-973df7c0e94f0bbc0403c6e2038363a75bb81bca.zip CMake-973df7c0e94f0bbc0403c6e2038363a75bb81bca.tar.gz CMake-973df7c0e94f0bbc0403c6e2038363a75bb81bca.tar.bz2 |
VS10: Order .vcxproj dependencies deterministically (#10502)
This avoids needless modification of the project files during
regeneration.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalVisualStudioGenerator.h | 16 | ||||
-rw-r--r-- | 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<cmStdString> {}; class VSDependMap: public std::map<cmTarget*, VSDependSet> {}; 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("<ItemGroup>\n", 1); - for( cmGlobalGenerator::TargetDependSet::const_iterator i = depends.begin(); + for( OrderedTargetDependSet::const_iterator i = depends.begin(); i != depends.end(); ++i) { cmTarget* dt = *i; |