|  | @@ -111,6 +111,53 @@ void cmGlobalVisualStudio15Generator::WriteSLNHeader(std::ostream& fout)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +bool cmGlobalVisualStudio15Generator::SetGeneratorInstance(
 | 
	
		
			
				|  |  | +  std::string const& i, cmMakefile* mf)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  if (!i.empty()) {
 | 
	
		
			
				|  |  | +    if (!this->vsSetupAPIHelper.SetVSInstance(i)) {
 | 
	
		
			
				|  |  | +      std::ostringstream e;
 | 
	
		
			
				|  |  | +      /* clang-format off */
 | 
	
		
			
				|  |  | +      e <<
 | 
	
		
			
				|  |  | +        "Generator\n"
 | 
	
		
			
				|  |  | +        "  " << this->GetName() << "\n"
 | 
	
		
			
				|  |  | +        "could not find specified instance of Visual Studio:\n"
 | 
	
		
			
				|  |  | +        "  " << i;
 | 
	
		
			
				|  |  | +      /* clang-format on */
 | 
	
		
			
				|  |  | +      mf->IssueMessage(cmake::FATAL_ERROR, e.str());
 | 
	
		
			
				|  |  | +      return false;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  std::string vsInstance;
 | 
	
		
			
				|  |  | +  if (!this->vsSetupAPIHelper.GetVSInstanceInfo(vsInstance)) {
 | 
	
		
			
				|  |  | +    std::ostringstream e;
 | 
	
		
			
				|  |  | +    /* clang-format off */
 | 
	
		
			
				|  |  | +    e <<
 | 
	
		
			
				|  |  | +      "Generator\n"
 | 
	
		
			
				|  |  | +      "  " << this->GetName() << "\n"
 | 
	
		
			
				|  |  | +      "could not find any instance of Visual Studio.\n";
 | 
	
		
			
				|  |  | +    /* clang-format on */
 | 
	
		
			
				|  |  | +    mf->IssueMessage(cmake::FATAL_ERROR, e.str());
 | 
	
		
			
				|  |  | +    return false;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // Save the selected instance persistently.
 | 
	
		
			
				|  |  | +  std::string genInstance = mf->GetSafeDefinition("CMAKE_GENERATOR_INSTANCE");
 | 
	
		
			
				|  |  | +  if (vsInstance != genInstance) {
 | 
	
		
			
				|  |  | +    this->CMakeInstance->AddCacheEntry(
 | 
	
		
			
				|  |  | +      "CMAKE_GENERATOR_INSTANCE", vsInstance.c_str(),
 | 
	
		
			
				|  |  | +      "Generator instance identifier.", cmStateEnums::INTERNAL);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  return true;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +bool cmGlobalVisualStudio15Generator::GetVSInstance(std::string& dir) const
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  return vsSetupAPIHelper.GetVSInstanceInfo(dir);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  bool cmGlobalVisualStudio15Generator::InitializeWindows(cmMakefile* mf)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    // If the Win 8.1 SDK is installed then we can select a SDK matching
 |