diff options
author | Orkun Tokdemir <ilhanorkuntokdemir@gmail.com> | 2023-04-03 14:52:13 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-04-05 20:12:16 (GMT) |
commit | 69cf9700e6873a86094fe66c5091c21b909e1969 (patch) | |
tree | 40b06b875c47853a8ac6ddde5b01ad88454e2cbc /Source | |
parent | 7cecb6353e0018fc2b4d0de83c209c0465b585ce (diff) | |
download | CMake-69cf9700e6873a86094fe66c5091c21b909e1969.zip CMake-69cf9700e6873a86094fe66c5091c21b909e1969.tar.gz CMake-69cf9700e6873a86094fe66c5091c21b909e1969.tar.bz2 |
Autogen: Defer setup until Generate step
It is better to set variables up once all target dependencies are known.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 22 | ||||
-rw-r--r-- | Source/cmGlobalGenerator.h | 6 |
2 files changed, 20 insertions, 8 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index eb3f433..3563a1a 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1544,8 +1544,9 @@ bool cmGlobalGenerator::Compute() } #ifndef CMAKE_BOOTSTRAP - cmQtAutoGenGlobalInitializer qtAutoGen(this->LocalGenerators); - if (!qtAutoGen.InitializeCustomTargets()) { + this->QtAutoGen = + cm::make_unique<cmQtAutoGenGlobalInitializer>(this->LocalGenerators); + if (!this->QtAutoGen->InitializeCustomTargets()) { return false; } #endif @@ -1565,12 +1566,6 @@ bool cmGlobalGenerator::Compute() } } -#ifndef CMAKE_BOOTSTRAP - if (!qtAutoGen.SetupCustomTargets()) { - return false; - } -#endif - for (const auto& localGen : this->LocalGenerators) { cmMakefile* mf = localGen->GetMakefile(); for (const auto& g : mf->GetInstallGenerators()) { @@ -1635,6 +1630,17 @@ void cmGlobalGenerator::Generate() this->CMakeInstance->UpdateProgress("Generating", 0.1f); +#ifndef CMAKE_BOOTSTRAP + if (!this->QtAutoGen->SetupCustomTargets()) { + if (!cmSystemTools::GetErrorOccurredFlag()) { + this->GetCMakeInstance()->IssueMessage( + MessageType::FATAL_ERROR, + "Problem setting up custom targets for QtAutoGen"); + } + return; + } +#endif + // Generate project files for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) { this->SetCurrentMakefile(this->LocalGenerators[i]->GetMakefile()); diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 0e0624a..dde3648 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -50,6 +50,7 @@ class cmLinkLineComputer; class cmLocalGenerator; class cmMakefile; class cmOutputConverter; +class cmQtAutoGenGlobalInitializer; class cmSourceFile; class cmState; class cmStateDirectory; @@ -683,6 +684,11 @@ protected: cmake* CMakeInstance; std::vector<std::unique_ptr<cmMakefile>> Makefiles; LocalGeneratorVector LocalGenerators; + +#ifndef CMAKE_BOOTSTRAP + std::unique_ptr<cmQtAutoGenGlobalInitializer> QtAutoGen; +#endif + cmMakefile* CurrentConfigureMakefile; // map from project name to vector of local generators in that project std::map<std::string, std::vector<cmLocalGenerator*>> ProjectMap; |