Procházet zdrojové kódy

cmFindBase: skip writing `names` and `*_directories` when empty

When the arrays are empty, the YAML ends up with `foo:` which is
equivalent to `foo: null`, not `foo: []`. Avoid writing the key when it
has no information to provide.
Ben Boeckel před 7 měsíci
rodič
revize
e98381af21
1 změnil soubory, kde provedl 9 přidání a 3 odebrání
  1. 9 3
      Source/cmFindBase.cxx

+ 9 - 3
Source/cmFindBase.cxx

@@ -759,14 +759,20 @@ void cmFindBaseDebugState::WriteEvent(cmConfigureLog& log,
                  !this->FindCommand->NoCMakeInstallPath);
   log.EndObject();
 
-  log.WriteValue("names"_s, this->FindBaseCommand->Names);
+  if (!this->FindBaseCommand->Names.empty()) {
+    log.WriteValue("names"_s, this->FindBaseCommand->Names);
+  }
   std::vector<std::string> directories;
   directories.reserve(this->FailedSearchLocations.size());
   for (auto const& location : this->FailedSearchLocations) {
     directories.push_back(location.path);
   }
-  log.WriteValue("candidate_directories"_s, this->FindCommand->SearchPaths);
-  log.WriteValue("searched_directories"_s, directories);
+  if (!this->FindCommand->SearchPaths.empty()) {
+    log.WriteValue("candidate_directories"_s, this->FindCommand->SearchPaths);
+  }
+  if (!directories.empty()) {
+    log.WriteValue("searched_directories"_s, directories);
+  }
   if (!this->FoundSearchLocation.path.empty()) {
     log.WriteValue("found"_s, this->FoundSearchLocation.path);
   } else {