BUG: Fix recent find_library change to look for user-specified name first to do so only if the name matches a valid library extension.
This commit is contained in:
parent
138d479c67
commit
fd2a6a8693
@ -234,6 +234,24 @@ std::string cmFindLibraryCommand::FindLibrary(const char* name)
|
|||||||
std::vector<std::string> suffixes;
|
std::vector<std::string> suffixes;
|
||||||
cmSystemTools::ExpandListArgument(prefixes_list, prefixes, true);
|
cmSystemTools::ExpandListArgument(prefixes_list, prefixes, true);
|
||||||
cmSystemTools::ExpandListArgument(suffixes_list, suffixes, true);
|
cmSystemTools::ExpandListArgument(suffixes_list, suffixes, true);
|
||||||
|
|
||||||
|
// If the original library name provided by the user matches one of
|
||||||
|
// the suffixes, try it first.
|
||||||
|
bool tryOrig = false;
|
||||||
|
{
|
||||||
|
std::string nm = name;
|
||||||
|
for(std::vector<std::string>::const_iterator si = suffixes.begin();
|
||||||
|
!tryOrig && si != suffixes.end(); ++si)
|
||||||
|
{
|
||||||
|
std::string const& suffix = *si;
|
||||||
|
if(nm.length() > suffix.length() &&
|
||||||
|
nm.substr(nm.size()-suffix.length()) == suffix)
|
||||||
|
{
|
||||||
|
tryOrig = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add a trailing slash to all paths to aid the search process.
|
// Add a trailing slash to all paths to aid the search process.
|
||||||
for(std::vector<std::string>::iterator i = this->SearchPaths.begin();
|
for(std::vector<std::string>::iterator i = this->SearchPaths.begin();
|
||||||
i != this->SearchPaths.end(); ++i)
|
i != this->SearchPaths.end(); ++i)
|
||||||
@ -264,13 +282,16 @@ std::string cmFindLibraryCommand::FindLibrary(const char* name)
|
|||||||
if(!onlyFrameworks)
|
if(!onlyFrameworks)
|
||||||
{
|
{
|
||||||
// Try the original library name as specified by the user.
|
// Try the original library name as specified by the user.
|
||||||
tryPath = *p;
|
if(tryOrig)
|
||||||
tryPath += name;
|
|
||||||
if(cmSystemTools::FileExists(tryPath.c_str(), true))
|
|
||||||
{
|
{
|
||||||
tryPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
|
tryPath = *p;
|
||||||
cmSystemTools::ConvertToUnixSlashes(tryPath);
|
tryPath += name;
|
||||||
return tryPath;
|
if(cmSystemTools::FileExists(tryPath.c_str(), true))
|
||||||
|
{
|
||||||
|
tryPath = cmSystemTools::CollapseFullPath(tryPath.c_str());
|
||||||
|
cmSystemTools::ConvertToUnixSlashes(tryPath);
|
||||||
|
return tryPath;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try various library naming conventions.
|
// Try various library naming conventions.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user