Explorar el Código

Merge topic 'autogen_single_entry'

87e7904c91 Autogen: Use a single AUTOGEN  setup function in cmGlobalGenerator

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2260
Brad King hace 7 años
padre
commit
1d76991a41
Se han modificado 2 ficheros con 28 adiciones y 28 borrados
  1. 25 24
      Source/cmGlobalGenerator.cxx
  2. 3 4
      Source/cmGlobalGenerator.h

+ 25 - 24
Source/cmGlobalGenerator.cxx

@@ -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
Source/cmGlobalGenerator.h

@@ -33,7 +33,6 @@ class cmLinkLineComputer;
 class cmLocalGenerator;
 class cmMakefile;
 class cmOutputConverter;
-class cmQtAutoGenInitializer;
 class cmSourceFile;
 class cmStateDirectory;
 class cmake;
@@ -443,9 +442,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;