Hi,

as I found out today this construct doesn't work:

find_library(MYLIB libfoo.so.2)

This is because find_library will only try to access the whole path if the 
given name matches PREFIX.*SUFFIX, which is obviously not the case here. My 
simple approach on fixing this would be to also allow PREFIX.*SUFFIX\..*:

diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx
index 2fa2cca..da7650a 100644
--- a/Source/cmFindLibraryCommand.cxx
+++ b/Source/cmFindLibraryCommand.cxx
@@ -358,9 +358,17 @@ bool cmFindLibraryHelper::HasValidSuffix(std::string 
const& name)
   for(std::vector<std::string>::const_iterator si = this->Suffixes.begin();
       si != this->Suffixes.end(); ++si)
     {
-    std::string const& suffix = *si;
-    if(name.length() > suffix.length() &&
-       name.substr(name.size()-suffix.length()) == suffix)
+    std::string suffix = *si;
+    if(name.length() <= suffix.length())
+      {
+      continue;
+      }
+    if(name.substr(name.size()-suffix.length()) == suffix)
+      {
+      return true;
+      }
+    suffix += ".";
+    if(name.find(suffix) != name.npos)
       {
       return true;
       }

Any objections?

Attachment: signature.asc
Description: This is a digitally signed message part.

--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to