diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2016-06-13 11:10:59 -0400 |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2016-06-13 11:16:12 -0400 |
commit | 919db25c3b54f0303a19abb4a9e4f16056a3c1b6 (patch) | |
tree | efac4b1898fa5fbe07a117fd8a20fce2284e5513 /Source | |
parent | ebf18df58083c90d4ba06ab896dfad8df9fe6ade (diff) | |
download | cmake-919db25c3b54f0303a19abb4a9e4f16056a3c1b6.tar.gz |
cmFindPackageCommand: remove duplicate paths from error message
Fixes #15252.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmFindPackageCommand.cxx | 4 | ||||
-rw-r--r-- | Source/cmFindPackageCommand.h | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 4ab7a7239d..1945c44c85 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -664,6 +664,8 @@ bool cmFindPackageCommand::HandlePackageMode() // If there are files in ConsideredConfigs, it means that FooConfig.cmake // have been found, but they didn't have appropriate versions. else if (!this->ConsideredConfigs.empty()) { + std::vector<ConfigFileInfo>::const_iterator duplicate_end = + cmRemoveDuplicates(this->ConsideredConfigs); e << "Could not find a configuration file for package \"" << this->Name << "\" that " << (this->VersionExact ? "exactly matches" : "is compatible with") @@ -672,7 +674,7 @@ bool cmFindPackageCommand::HandlePackageMode() "accepted:\n"; for (std::vector<ConfigFileInfo>::const_iterator i = this->ConsideredConfigs.begin(); - i != this->ConsideredConfigs.end(); ++i) { + i != duplicate_end; ++i) { e << " " << i->filename << ", version: " << i->version << "\n"; } } else { diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h index eff6b80901..00db22b3fe 100644 --- a/Source/cmFindPackageCommand.h +++ b/Source/cmFindPackageCommand.h @@ -159,6 +159,21 @@ private: { std::string filename; std::string version; + + bool operator<(ConfigFileInfo const& rhs) const + { + return this->filename < rhs.filename; + } + + bool operator==(ConfigFileInfo const& rhs) const + { + return this->filename == rhs.filename; + } + + bool operator!=(ConfigFileInfo const& rhs) const + { + return !(*this == rhs); + } }; std::vector<ConfigFileInfo> ConsideredConfigs; }; |