Autogen: Use a single AUTOGEN setup function in cmGlobalGenerator

By moving all AUTOGEN setup code in ``cmGlobalGenerator``
into a single ``cmGlobalGenerator::QtAutoGen`` function, the
``cmGlobalGenerator::Compute`` function becomes cleaner.
This commit is contained in:
Sebastian Holtermann
2018-08-03 12:55:50 +02:00
parent ce309b624a
commit 87e7904c91
2 changed files with 28 additions and 28 deletions
+25 -24
View File
@@ -1313,16 +1313,10 @@ bool cmGlobalGenerator::Compute()
// so create the map from project name to vector of local generators
this->FillProjectMap();
#ifdef CMAKE_BUILD_WITH_CMAKE
// Iterate through all targets and set up automoc for those which have
// the AUTOMOC, AUTOUIC or AUTORCC property set
auto autogenInits = this->CreateQtAutoGenInitializers();
for (auto& autoGen : autogenInits) {
if (!autoGen->InitCustomTargets()) {
return false;
}
// Iterate through all targets and set up AUTOMOC, AUTOUIC and AUTORCC
if (!this->QtAutoGen()) {
return false;
}
#endif
// Add generator specific helper commands
for (cmLocalGenerator* localGen : this->LocalGenerators) {
@@ -1341,16 +1335,6 @@ bool cmGlobalGenerator::Compute()
}
}
#ifdef CMAKE_BUILD_WITH_CMAKE
for (auto& autoGen : autogenInits) {
if (!autoGen->SetupCustomTargets()) {
return false;
}
autoGen.reset(nullptr);
}
autogenInits.clear();
#endif
for (cmLocalGenerator* localGen : this->LocalGenerators) {
cmMakefile* mf = localGen->GetMakefile();
for (cmInstallGenerator* g : mf->GetInstallGenerators()) {
@@ -1480,12 +1464,11 @@ bool cmGlobalGenerator::ComputeTargetDepends()
return true;
}
std::vector<std::unique_ptr<cmQtAutoGenInitializer>>
cmGlobalGenerator::CreateQtAutoGenInitializers()
bool cmGlobalGenerator::QtAutoGen()
{
#ifdef CMAKE_BUILD_WITH_CMAKE
std::vector<std::unique_ptr<cmQtAutoGenInitializer>> autogenInits;
#ifdef CMAKE_BUILD_WITH_CMAKE
for (cmLocalGenerator* localGen : this->LocalGenerators) {
const std::vector<cmGeneratorTarget*>& targets =
localGen->GetGeneratorTargets();
@@ -1519,12 +1502,30 @@ cmGlobalGenerator::CreateQtAutoGenInitializers()
continue;
}
autogenInits.emplace_back(new cmQtAutoGenInitializer(
autogenInits.emplace_back(cm::make_unique<cmQtAutoGenInitializer>(
target, mocEnabled, uicEnabled, rccEnabled, qtVersionMajor));
}
}
if (!autogenInits.empty()) {
// Initialize custom targets
for (auto& autoGen : autogenInits) {
if (!autoGen->InitCustomTargets()) {
return false;
}
}
// Setup custom targets
for (auto& autoGen : autogenInits) {
if (!autoGen->SetupCustomTargets()) {
return false;
}
autoGen.reset(nullptr);
}
}
#endif
return autogenInits;
return true;
}
cmLinkLineComputer* cmGlobalGenerator::CreateLinkLineComputer(
+3 -4
View File
@@ -33,7 +33,6 @@ class cmLinkLineComputer;
class cmLocalGenerator;
class cmMakefile;
class cmOutputConverter;
class cmQtAutoGenInitializer;
class cmSourceFile;
class cmStateDirectory;
class cmake;
@@ -441,9 +440,9 @@ protected:
virtual bool CheckALLOW_DUPLICATE_CUSTOM_TARGETS() const;
// Qt auto generators
std::vector<std::unique_ptr<cmQtAutoGenInitializer>>
CreateQtAutoGenInitializers();
/// @brief Qt AUTOMOC/UIC/RCC target generation
/// @return true on success
bool QtAutoGen();
std::string SelectMakeProgram(const std::string& makeProgram,
const std::string& makeDefault = "") const;