Browse Source

cmGlobalVisualStudioVersionedGenerator: Allow repeating SetGeneratorInstance

Brad King 4 years ago
parent
commit
8917b8512f

+ 6 - 0
Source/cmGlobalVisualStudioVersionedGenerator.cxx

@@ -436,6 +436,9 @@ bool cmGlobalVisualStudioVersionedGenerator::MatchesGeneratorName(
 bool cmGlobalVisualStudioVersionedGenerator::SetGeneratorInstance(
   std::string const& i, cmMakefile* mf)
 {
+  if (this->GeneratorInstance && i == *(this->GeneratorInstance)) {
+    return true;
+  }
   if (!i.empty()) {
     if (!this->vsSetupAPIHelper.SetVSInstance(i)) {
       std::ostringstream e;
@@ -472,6 +475,9 @@ bool cmGlobalVisualStudioVersionedGenerator::SetGeneratorInstance(
                                        cmStateEnums::INTERNAL);
   }
 
+  // The selected instance may have a different MSBuild than previously found.
+  this->MSBuildCommandInitialized = false;
+
   return true;
 }
 

+ 3 - 0
Source/cmGlobalVisualStudioVersionedGenerator.h

@@ -8,6 +8,8 @@
 #include <memory>
 #include <string>
 
+#include <cm/optional>
+
 #include "cmGlobalVisualStudio14Generator.h"
 #include "cmVSSetupHelper.h"
 
@@ -72,4 +74,5 @@ private:
   class Factory17;
   friend class Factory17;
   mutable cmVSSetupAPIHelper vsSetupAPIHelper;
+  cm::optional<std::string> GeneratorInstance;
 };