From 6999b871335c26d9d39b05023559254b1437bcf5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 20 Oct 2021 12:01:53 -0400 Subject: cmGlobalVisualStudio10Generator: Add method to find MSBuild early Add a way to find MSBuild before the main `FindMakeProgram` code path has executed. --- Source/cmGlobalVisualStudio10Generator.cxx | 6 ++++++ Source/cmGlobalVisualStudio10Generator.h | 2 ++ Source/cmGlobalVisualStudioVersionedGenerator.cxx | 11 +++++++++++ Source/cmGlobalVisualStudioVersionedGenerator.h | 2 ++ 4 files changed, 21 insertions(+) diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 499efbb..c11516d 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -856,6 +856,12 @@ std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand() return this->MSBuildCommand; } +cm::optional +cmGlobalVisualStudio10Generator::FindMSBuildCommandEarly(cmMakefile*) +{ + return this->GetMSBuildCommand(); +} + std::string cmGlobalVisualStudio10Generator::FindMSBuildCommand() { std::string msbuild; diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h index a5ee284..6e62390 100644 --- a/Source/cmGlobalVisualStudio10Generator.h +++ b/Source/cmGlobalVisualStudio10Generator.h @@ -134,6 +134,8 @@ public: bool GetSupportsUnityBuilds() const { return this->SupportsUnityBuilds; } + virtual cm::optional FindMSBuildCommandEarly(cmMakefile* mf); + bool FindMakeProgram(cmMakefile* mf) override; bool IsIPOSupported() const override { return true; } diff --git a/Source/cmGlobalVisualStudioVersionedGenerator.cxx b/Source/cmGlobalVisualStudioVersionedGenerator.cxx index b6219a6..ec2e74f 100644 --- a/Source/cmGlobalVisualStudioVersionedGenerator.cxx +++ b/Source/cmGlobalVisualStudioVersionedGenerator.cxx @@ -718,6 +718,17 @@ cmGlobalVisualStudioVersionedGenerator::GetWindows10SDKMaxVersionDefault( return std::string(); } +cm::optional +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; diff --git a/Source/cmGlobalVisualStudioVersionedGenerator.h b/Source/cmGlobalVisualStudioVersionedGenerator.h index 691651f..b7760ac 100644 --- a/Source/cmGlobalVisualStudioVersionedGenerator.h +++ b/Source/cmGlobalVisualStudioVersionedGenerator.h @@ -31,6 +31,8 @@ public: bool GetVSInstance(std::string& dir) const; + cm::optional FindMSBuildCommandEarly(cmMakefile* mf) override; + cm::optional GetVSInstanceVersion() const override; AuxToolset FindAuxToolset(std::string& version, -- cgit v0.12