Bläddra i källkod

cmGlobalVisualStudio10Generator: Add method to find MSBuild early

Add a way to find MSBuild before the main `FindMakeProgram` code path
has executed.
Brad King 4 år sedan
förälder
incheckning
6999b87133

+ 6 - 0
Source/cmGlobalVisualStudio10Generator.cxx

@@ -856,6 +856,12 @@ std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand()
   return this->MSBuildCommand;
 }
 
+cm::optional<std::string>
+cmGlobalVisualStudio10Generator::FindMSBuildCommandEarly(cmMakefile*)
+{
+  return this->GetMSBuildCommand();
+}
+
 std::string cmGlobalVisualStudio10Generator::FindMSBuildCommand()
 {
   std::string msbuild;

+ 2 - 0
Source/cmGlobalVisualStudio10Generator.h

@@ -134,6 +134,8 @@ public:
 
   bool GetSupportsUnityBuilds() const { return this->SupportsUnityBuilds; }
 
+  virtual cm::optional<std::string> FindMSBuildCommandEarly(cmMakefile* mf);
+
   bool FindMakeProgram(cmMakefile* mf) override;
 
   bool IsIPOSupported() const override { return true; }

+ 11 - 0
Source/cmGlobalVisualStudioVersionedGenerator.cxx

@@ -718,6 +718,17 @@ cmGlobalVisualStudioVersionedGenerator::GetWindows10SDKMaxVersionDefault(
   return std::string();
 }
 
+cm::optional<std::string>
+cmGlobalVisualStudioVersionedGenerator::FindMSBuildCommandEarly(cmMakefile* mf)
+{
+  std::string instance = mf->GetSafeDefinition("CMAKE_GENERATOR_INSTANCE");
+  if (!this->SetGeneratorInstance(instance, mf)) {
+    cmSystemTools::SetFatalErrorOccured();
+    return {};
+  }
+  return this->cmGlobalVisualStudio14Generator::FindMSBuildCommandEarly(mf);
+}
+
 std::string cmGlobalVisualStudioVersionedGenerator::FindMSBuildCommand()
 {
   std::string msbuild;

+ 2 - 0
Source/cmGlobalVisualStudioVersionedGenerator.h

@@ -31,6 +31,8 @@ public:
 
   bool GetVSInstance(std::string& dir) const;
 
+  cm::optional<std::string> FindMSBuildCommandEarly(cmMakefile* mf) override;
+
   cm::optional<std::string> GetVSInstanceVersion() const override;
 
   AuxToolset FindAuxToolset(std::string& version,