Procházet zdrojové kódy

Autogen: Issue a warning when AUTOMOC/UIC/RCC gets disabled.

We used to silently disable AUTOMOC/UIC/RCC when no valid Qt
version was found.  This patch introduces the generation of
a warning message in that case.

Closes #18732.
Sebastian Holtermann před 7 roky
rodič
revize
5ae69f5919
1 změnil soubory, kde provedl 25 přidání a 0 odebrání
  1. 25 0
      Source/cmGlobalGenerator.cxx

+ 25 - 0
Source/cmGlobalGenerator.cxx

@@ -1500,6 +1500,31 @@ bool cmGlobalGenerator::QtAutoGen()
       auto qtVersion = cmQtAutoGenInitializer::GetQtVersion(target);
       // don't do anything if there is no Qt4 or Qt5Core (which contains moc)
       if (qtVersion.Major != 4 && qtVersion.Major != 5) {
+        std::string msg = "AUTOGEN: No valid Qt version found for target ";
+        msg += target->GetName();
+        msg += ". ";
+        {
+          std::vector<std::string> lst;
+          if (mocEnabled) {
+            lst.emplace_back("AUTOMOC");
+          }
+          if (uicEnabled) {
+            lst.emplace_back("AUTOUIC");
+          }
+          if (rccEnabled) {
+            lst.emplace_back("AUTORCC");
+          }
+          msg += cmJoin(lst, ", ");
+        }
+        msg += " disabled.  ";
+        msg += "Consider adding:\n";
+        if (uicEnabled) {
+          msg += "  find_package(Qt5 COMPONENTS Widgets)\n";
+        } else {
+          msg += "  find_package(Qt5 COMPONENTS Core)\n";
+        }
+        msg += "to your CMakeLists.txt file.";
+        target->Makefile->IssueMessage(cmake::AUTHOR_WARNING, msg);
         continue;
       }