From e42881422fb46ed8ba0ed9900d3483e4934cf6ee Mon Sep 17 00:00:00 2001 From: Eduard Voronkin <42834212+Noxybot@users.noreply.github.com> Date: Tue, 21 Oct 2025 21:13:06 -0700 Subject: [PATCH] FASTBuild: optimize try_compile builds The generator does a lot of tricks in order to make the "rebuild-bff" target up-to-date immediately after the generation. We can skip all of those during "TryCompile" runs, which should reduce configure time. --- Source/cmGlobalBorlandMakefileGenerator.cxx | 3 ++- Source/cmGlobalBorlandMakefileGenerator.h | 4 ++-- Source/cmGlobalFastbuildGenerator.cxx | 13 +++++++---- Source/cmGlobalFastbuildGenerator.h | 4 ++-- Source/cmGlobalGenerator.cxx | 15 ++++++++----- Source/cmGlobalGenerator.h | 25 +++++++++++++-------- Source/cmGlobalGhsMultiGenerator.cxx | 3 ++- Source/cmGlobalGhsMultiGenerator.h | 4 ++-- Source/cmGlobalJOMMakefileGenerator.cxx | 3 ++- Source/cmGlobalJOMMakefileGenerator.h | 4 ++-- Source/cmGlobalNMakeMakefileGenerator.cxx | 3 ++- Source/cmGlobalNMakeMakefileGenerator.h | 4 ++-- Source/cmGlobalNinjaGenerator.cxx | 3 ++- Source/cmGlobalNinjaGenerator.h | 4 ++-- Source/cmGlobalUnixMakefileGenerator3.cxx | 3 ++- Source/cmGlobalUnixMakefileGenerator3.h | 4 ++-- Source/cmGlobalVisualStudio10Generator.cxx | 3 ++- Source/cmGlobalVisualStudio10Generator.h | 4 ++-- Source/cmGlobalVisualStudio7Generator.cxx | 3 ++- Source/cmGlobalVisualStudio7Generator.h | 4 ++-- Source/cmGlobalWatcomWMakeGenerator.cxx | 3 ++- Source/cmGlobalWatcomWMakeGenerator.h | 4 ++-- Source/cmGlobalXCodeGenerator.cxx | 3 ++- Source/cmGlobalXCodeGenerator.h | 4 ++-- 24 files changed, 76 insertions(+), 51 deletions(-) diff --git a/Source/cmGlobalBorlandMakefileGenerator.cxx b/Source/cmGlobalBorlandMakefileGenerator.cxx index adb37043d5..a1091a247a 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.cxx +++ b/Source/cmGlobalBorlandMakefileGenerator.cxx @@ -72,7 +72,8 @@ cmGlobalBorlandMakefileGenerator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& config, int /*jobs*/, bool verbose, - cmBuildOptions buildOptions, std::vector const& makeOptions) + cmBuildOptions buildOptions, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { return this->cmGlobalUnixMakefileGenerator3::GenerateBuildCommand( makeProgram, projectName, projectDir, targetNames, config, diff --git a/Source/cmGlobalBorlandMakefileGenerator.h b/Source/cmGlobalBorlandMakefileGenerator.h index a59b19fd91..b1e5e7ccde 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.h +++ b/Source/cmGlobalBorlandMakefileGenerator.h @@ -64,8 +64,8 @@ protected: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; void PrintBuildCommandAdvice(std::ostream& os, int jobs) const override; }; diff --git a/Source/cmGlobalFastbuildGenerator.cxx b/Source/cmGlobalFastbuildGenerator.cxx index 9aee5221c7..f37334c315 100644 --- a/Source/cmGlobalFastbuildGenerator.cxx +++ b/Source/cmGlobalFastbuildGenerator.cxx @@ -351,7 +351,8 @@ cmGlobalFastbuildGenerator::GenerateBuildCommand( std::string const& makeProgram, std::string const& /*projectName*/, std::string const& projectDir, std::vector const& targetNames, std::string const& /*config*/, int /*jobs*/, bool verbose, - cmBuildOptions /*buildOptions*/, std::vector const& makeOptions) + cmBuildOptions /*buildOptions*/, std::vector const& makeOptions, + BuildTryCompile isInTryCompile) { GeneratedMakeCommand makeCommand; this->FastbuildCommand = this->SelectMakeProgram(makeProgram); @@ -386,8 +387,12 @@ cmGlobalFastbuildGenerator::GenerateBuildCommand( makeCommand.Add("-verbose"); } - // Make "rebuild-bff" target up-to-date before running the build. + // Don't do extra work during "TryCompile". + if (isInTryCompile == BuildTryCompile::Yes) { + return { std::move(makeCommand) }; + } + // Make "rebuild-bff" target up-to-date before running the build. std::string output; ExecuteFastbuildTarget(projectDir, FASTBUILD_REBUILD_BFF_TARGET_NAME, output, { "-why" }); @@ -468,10 +473,10 @@ void cmGlobalFastbuildGenerator::Generate() this->RemoveUnknownClangTidyExportFixesFiles(); - if (this->GetCMakeInstance()->GetRegenerateDuringBuild()) { + if (this->GetCMakeInstance()->GetRegenerateDuringBuild() || + this->GetCMakeInstance()->GetIsInTryCompile()) { return; } - // TODO: figure out how to skip this in TryCompile // Make "rebuild-bff" target up-to-date after the generation. // This is actually a noop, it just asks CMake to touch the generated file // so FASTBuild would consider the target as up-to-date. diff --git a/Source/cmGlobalFastbuildGenerator.h b/Source/cmGlobalFastbuildGenerator.h index 2d66cd73f5..29b31cf1d7 100644 --- a/Source/cmGlobalFastbuildGenerator.h +++ b/Source/cmGlobalFastbuildGenerator.h @@ -365,8 +365,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; std::unique_ptr CreateLocalGenerator( cmMakefile* makefile) override; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index c4c3a27e11..5b88e4b728 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -2161,9 +2161,10 @@ int cmGlobalGenerator::TryCompile(int jobs, std::string const& srcdir, cmBuildOptions defaultBuildOptions(false, fast, PackageResolveMode::Disable); std::stringstream ostr; - auto ret = this->Build(jobs, srcdir, bindir, projectName, newTarget, ostr, - "", config, defaultBuildOptions, true, - this->TryCompileTimeout, cmSystemTools::OUTPUT_NONE); + auto ret = + this->Build(jobs, srcdir, bindir, projectName, newTarget, ostr, "", config, + defaultBuildOptions, true, this->TryCompileTimeout, + cmSystemTools::OUTPUT_NONE, {}, BuildTryCompile::Yes); output = ostr.str(); return ret; } @@ -2173,7 +2174,8 @@ cmGlobalGenerator::GenerateBuildCommand( std::string const& /*unused*/, std::string const& /*unused*/, std::string const& /*unused*/, std::vector const& /*unused*/, std::string const& /*unused*/, int /*unused*/, bool /*unused*/, - cmBuildOptions /*unused*/, std::vector const& /*unused*/) + cmBuildOptions /*unused*/, std::vector const& /*unused*/, + BuildTryCompile /*unused*/) { GeneratedMakeCommand makeCommand; makeCommand.Add("cmGlobalGenerator::GenerateBuildCommand not implemented"); @@ -2193,7 +2195,8 @@ int cmGlobalGenerator::Build( std::ostream& ostr, std::string const& makeCommandCSTR, std::string const& config, cmBuildOptions buildOptions, bool verbose, cmDuration timeout, cmSystemTools::OutputOption outputMode, - std::vector const& nativeOptions) + std::vector const& nativeOptions, + BuildTryCompile isInTryCompile) { bool hideconsole = cmSystemTools::GetRunCommandHideConsole(); @@ -2222,7 +2225,7 @@ int cmGlobalGenerator::Build( std::vector makeCommand = this->GenerateBuildCommand( makeCommandCSTR, projectName, bindir, targets, realConfig, jobs, verbose, - buildOptions, nativeOptions); + buildOptions, nativeOptions, isInTryCompile); // Workaround to convince some commands to produce output. if (outputMode == cmSystemTools::OUTPUT_PASSTHROUGH && diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 1589d2e8ca..5771256ea6 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -108,6 +108,11 @@ class cmGlobalGenerator { public: using LocalGeneratorVector = std::vector>; + enum class BuildTryCompile + { + No, + Yes, + }; //! Free any memory allocated with the GlobalGenerator cmGlobalGenerator(cmake* cm); @@ -253,14 +258,15 @@ public: * empty then all is assumed. clean indicates if a "make clean" should be * done first. */ - int Build(int jobs, std::string const& srcdir, std::string const& bindir, - std::string const& projectName, - std::vector const& targetNames, std::ostream& ostr, - std::string const& makeProgram, std::string const& config, - cmBuildOptions buildOptions, bool verbose, cmDuration timeout, - cmSystemTools::OutputOption outputMode, - std::vector const& nativeOptions = - std::vector()); + int Build( + int jobs, std::string const& srcdir, std::string const& bindir, + std::string const& projectName, + std::vector const& targetNames, std::ostream& ostr, + std::string const& makeProgram, std::string const& config, + cmBuildOptions buildOptions, bool verbose, cmDuration timeout, + cmSystemTools::OutputOption outputMode, + std::vector const& nativeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No); /** * Open a generated IDE project given the following information. @@ -277,7 +283,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = std::vector()); + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No); virtual void PrintBuildCommandAdvice(std::ostream& os, int jobs) const; diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index 8b0b4e13c8..4d11129f26 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -469,7 +469,8 @@ cmGlobalGhsMultiGenerator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& /*config*/, int jobs, bool verbose, - cmBuildOptions /*buildOptions*/, std::vector const& makeOptions) + cmBuildOptions /*buildOptions*/, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { GeneratedMakeCommand makeCommand; diff --git a/Source/cmGlobalGhsMultiGenerator.h b/Source/cmGlobalGhsMultiGenerator.h index e51c7eda50..f26ba487a3 100644 --- a/Source/cmGlobalGhsMultiGenerator.h +++ b/Source/cmGlobalGhsMultiGenerator.h @@ -87,8 +87,8 @@ protected: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; void AddExtraIDETargets() override; private: diff --git a/Source/cmGlobalJOMMakefileGenerator.cxx b/Source/cmGlobalJOMMakefileGenerator.cxx index 76327ed2a4..843e0244fb 100644 --- a/Source/cmGlobalJOMMakefileGenerator.cxx +++ b/Source/cmGlobalJOMMakefileGenerator.cxx @@ -63,7 +63,8 @@ cmGlobalJOMMakefileGenerator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, - cmBuildOptions buildOptions, std::vector const& makeOptions) + cmBuildOptions buildOptions, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { std::vector jomMakeOptions; diff --git a/Source/cmGlobalJOMMakefileGenerator.h b/Source/cmGlobalJOMMakefileGenerator.h index 0199dff0c7..287e049745 100644 --- a/Source/cmGlobalJOMMakefileGenerator.h +++ b/Source/cmGlobalJOMMakefileGenerator.h @@ -55,8 +55,8 @@ protected: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; private: void PrintCompilerAdvice(std::ostream& os, std::string const& lang, diff --git a/Source/cmGlobalNMakeMakefileGenerator.cxx b/Source/cmGlobalNMakeMakefileGenerator.cxx index 069a70a23b..9422dd40ef 100644 --- a/Source/cmGlobalNMakeMakefileGenerator.cxx +++ b/Source/cmGlobalNMakeMakefileGenerator.cxx @@ -106,7 +106,8 @@ cmGlobalNMakeMakefileGenerator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& config, int /*jobs*/, bool verbose, - cmBuildOptions buildOptions, std::vector const& makeOptions) + cmBuildOptions buildOptions, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { std::vector nmakeMakeOptions; diff --git a/Source/cmGlobalNMakeMakefileGenerator.h b/Source/cmGlobalNMakeMakefileGenerator.h index 54de4db398..9fef9f2316 100644 --- a/Source/cmGlobalNMakeMakefileGenerator.h +++ b/Source/cmGlobalNMakeMakefileGenerator.h @@ -62,8 +62,8 @@ protected: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; void PrintBuildCommandAdvice(std::ostream& os, int jobs) const override; diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index fc760dd283..d2bcccc8a3 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1010,7 +1010,8 @@ cmGlobalNinjaGenerator::GenerateBuildCommand( std::string const& /*projectDir*/, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions /*buildOptions*/, - std::vector const& makeOptions) + std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { GeneratedMakeCommand makeCommand; makeCommand.Add(this->SelectMakeProgram(makeProgram)); diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 8d80d13689..a1bca7281f 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -202,8 +202,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; // Setup target names char const* GetAllTargetName() const override { return "all"; } diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index fb7a4cfb56..58ae2478ae 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -537,7 +537,8 @@ cmGlobalUnixMakefileGenerator3::GenerateBuildCommand( std::string const& /*projectDir*/, std::vector const& targetNames, std::string const& /*config*/, int jobs, bool verbose, cmBuildOptions buildOptions, - std::vector const& makeOptions) + std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { GeneratedMakeCommand makeCommand; diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 58755c049e..4dcc165a47 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -173,8 +173,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; /** Record per-target progress information. */ void RecordTargetProgress(cmMakefileTargetGenerator* tg); diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 9c382d8ef1..9489cde5b8 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -1078,7 +1078,8 @@ cmGlobalVisualStudio10Generator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, - cmBuildOptions buildOptions, std::vector const& makeOptions) + cmBuildOptions buildOptions, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { std::vector makeCommands; // Select the caller- or user-preferred make program, else MSBuild. diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h index 79c0ca1ae1..00124d3670 100644 --- a/Source/cmGlobalVisualStudio10Generator.h +++ b/Source/cmGlobalVisualStudio10Generator.h @@ -39,8 +39,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; //! create the correct local generator std::unique_ptr CreateLocalGenerator( diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 4fb5f8c3f0..ec6702badd 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -180,7 +180,8 @@ cmGlobalVisualStudio7Generator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& config, int /*jobs*/, bool /*verbose*/, - cmBuildOptions /*buildOptions*/, std::vector const& makeOptions) + cmBuildOptions /*buildOptions*/, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile*/) { // Select the caller- or user-preferred make program, else devenv. std::string makeProgramSelected = diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index 1b4efd63d7..e958c8988a 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -73,8 +73,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; /** Append the subdirectory for the given configuration. */ void AppendDirectoryForConfig(std::string const& prefix, diff --git a/Source/cmGlobalWatcomWMakeGenerator.cxx b/Source/cmGlobalWatcomWMakeGenerator.cxx index 806144858b..23f4a0b3d6 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.cxx +++ b/Source/cmGlobalWatcomWMakeGenerator.cxx @@ -67,7 +67,8 @@ cmGlobalWatcomWMakeGenerator::GenerateBuildCommand( std::string const& makeProgram, std::string const& projectName, std::string const& projectDir, std::vector const& targetNames, std::string const& config, int /*jobs*/, bool verbose, - cmBuildOptions buildOptions, std::vector const& makeOptions) + cmBuildOptions buildOptions, std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile */) { return this->cmGlobalUnixMakefileGenerator3::GenerateBuildCommand( makeProgram, projectName, projectDir, targetNames, config, diff --git a/Source/cmGlobalWatcomWMakeGenerator.h b/Source/cmGlobalWatcomWMakeGenerator.h index 84ec7f8303..70bd8b4bb3 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.h +++ b/Source/cmGlobalWatcomWMakeGenerator.h @@ -63,8 +63,8 @@ protected: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; void PrintBuildCommandAdvice(std::ostream& os, int jobs) const override; }; diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 74d820a082..2f5df554b2 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -546,7 +546,8 @@ cmGlobalXCodeGenerator::GenerateBuildCommand( std::string const& /*projectDir*/, std::vector const& targetNames, std::string const& config, int jobs, bool /*verbose*/, cmBuildOptions /*buildOptions*/, - std::vector const& makeOptions) + std::vector const& makeOptions, + BuildTryCompile /*isInTryCompile */) { std::string const xcodebuild = this->SelectMakeProgram(makeProgram, this->GetXcodeBuildCommand()); diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 4a3efd79a4..266a9a9510 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -82,8 +82,8 @@ public: std::string const& projectDir, std::vector const& targetNames, std::string const& config, int jobs, bool verbose, cmBuildOptions buildOptions = cmBuildOptions(), - std::vector const& makeOptions = - std::vector()) override; + std::vector const& makeOptions = std::vector(), + BuildTryCompile isInTryCompile = BuildTryCompile::No) override; /** Append the subdirectory for the given configuration. */ void AppendDirectoryForConfig(std::string const& prefix,