cmFindPackageCommand: remove duplicate paths from error message

Fixes #15252.
This commit is contained in:
Ben Boeckel 2016-06-13 11:10:59 -04:00
parent ebf18df580
commit 919db25c3b
2 changed files with 18 additions and 1 deletions

View File

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

View File

@ -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;
};