Autogen: Split creation and setup of custom targets into separate steps

Defer the setup step until after compile features have been finalized on
normal targets.  Later this will help pass the information to Qt tools.

Issue: #24624
This commit is contained in:
Orkun Tokdemir 2023-03-21 18:18:46 +01:00 committed by Brad King
parent b69441c796
commit 21f812e57c
4 changed files with 12 additions and 25 deletions

View File

@ -1543,10 +1543,12 @@ bool cmGlobalGenerator::Compute()
return false;
}
// Iterate through all targets and set up AUTOMOC, AUTOUIC and AUTORCC
if (!this->QtAutoGen()) {
#ifndef CMAKE_BOOTSTRAP
cmQtAutoGenGlobalInitializer qtAutoGen(this->LocalGenerators);
if (!qtAutoGen.InitializeCustomTargets()) {
return false;
}
#endif
// Add generator specific helper commands
for (const auto& localGen : this->LocalGenerators) {
@ -1563,6 +1565,12 @@ 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()) {
@ -1764,16 +1772,6 @@ void cmGlobalGenerator::ComputeTargetOrder(cmGeneratorTarget const* gt,
entry->second = index++;
}
bool cmGlobalGenerator::QtAutoGen()
{
#ifndef CMAKE_BOOTSTRAP
cmQtAutoGenGlobalInitializer initializer(this->LocalGenerators);
return initializer.generate();
#else
return true;
#endif
}
bool cmGlobalGenerator::AddHeaderSetVerification()
{
for (auto const& gen : this->LocalGenerators) {

View File

@ -625,10 +625,6 @@ protected:
void CxxModuleSupportCheck() const;
/// @brief Qt AUTOMOC/UIC/RCC target generation
/// @return true on success
bool QtAutoGen();
bool AddHeaderSetVerification();
bool AddAutomaticSources();

View File

@ -264,11 +264,6 @@ cmQtAutoGenGlobalInitializer::GetCompilerFeatures(
return res;
}
bool cmQtAutoGenGlobalInitializer::generate()
{
return (this->InitializeCustomTargets() && this->SetupCustomTargets());
}
bool cmQtAutoGenGlobalInitializer::InitializeCustomTargets()
{
// Initialize global autogen targets

View File

@ -51,14 +51,12 @@ public:
Keywords const& kw() const { return this->Keywords_; }
bool generate();
bool InitializeCustomTargets();
bool SetupCustomTargets();
private:
friend class cmQtAutoGenInitializer;
bool InitializeCustomTargets();
bool SetupCustomTargets();
void GetOrCreateGlobalTarget(cmLocalGenerator* localGen,
std::string const& name,
std::string const& comment);