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.
This commit is contained in:
Ben Boeckel
2025-05-13 14:43:08 +02:00
parent 9d41f67319
commit e98381af21

View File

@@ -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 {