diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx index 73a458536b..eefc5161de 100644 --- a/Source/cmExportBuildFileGenerator.cxx +++ b/Source/cmExportBuildFileGenerator.cxx @@ -115,20 +115,21 @@ void cmExportBuildFileGenerator::SetImportLocationProperty( bool cmExportBuildFileGenerator::CollectExports( std::function visitor) { - std::vector targets; - this->GetTargets(targets); - for (auto const& tei : targets) { + auto pred = [&](cmExportBuildFileGenerator::TargetExport& tei) -> bool { cmGeneratorTarget* te = this->LG->FindGeneratorTargetToUse(tei.Name); if (this->ExportedTargets.insert(te).second) { this->Exports.emplace_back(te, tei.XcFrameworkLocation); visitor(te); - } else { - this->ComplainAboutDuplicateTarget(te->GetName()); - return false; + return true; } - } - return true; + this->ComplainAboutDuplicateTarget(te->GetName()); + return false; + }; + + std::vector targets; + this->GetTargets(targets); + return std::all_of(targets.begin(), targets.end(), pred); } void cmExportBuildFileGenerator::HandleMissingTarget( diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index 374b5eddf9..87389386a1 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmExportInstallFileGenerator.h" +#include #include #include #include @@ -313,18 +314,21 @@ std::string cmExportInstallFileGenerator::GetCxxModuleFile() const bool cmExportInstallFileGenerator::CollectExports( std::function const& visitor) { - for (auto const& te : this->GetExportSet()->GetTargetExports()) { + auto pred = [&](std::unique_ptr const& te) -> bool { if (te->NamelinkOnly) { - continue; + return true; } if (this->ExportedTargets.insert(te->Target).second) { visitor(te.get()); - } else { - this->ComplainAboutDuplicateTarget(te->Target->GetName()); - return false; + return true; } - } - return true; + + this->ComplainAboutDuplicateTarget(te->Target->GetName()); + return false; + }; + + auto const& targets = this->GetExportSet()->GetTargetExports(); + return std::all_of(targets.begin(), targets.end(), pred); } bool cmExportInstallFileGenerator::PopulateInterfaceProperties(