Browse Source

BUG: Be less aggressive about finding conflicts in the runtime path when the real soname is not known.

Brad King 18 năm trước cách đây
mục cha
commit
72a301f880
1 tập tin đã thay đổi với 5 bổ sung14 xóa
  1. 5 14
      Source/cmComputeLinkInformation.cxx

+ 5 - 14
Source/cmComputeLinkInformation.cxx

@@ -1083,13 +1083,10 @@ void cmComputeLinkInformation::FindDirectoriesForLib(unsigned int lri)
         (this->GlobalGenerator
          ->GetDirectoryContent(this->RuntimeDirectories[i], true));
 
-      // Get the extension which should appear in the soname.
-      std::string ext =
-        cmSystemTools::GetFilenameLastExtension(re.FileName);
-
-      // Get the set of files that might conflict.
-      std::string base =
-        cmSystemTools::GetFilenameWithoutLastExtension(re.FileName);
+      // Get the set of files that might conflict.  Since we do not
+      // know the soname just look at all files that start with the
+      // file name.  Usually the soname starts with the library name.
+      std::string base = re.FileName;
       std::set<cmStdString>::const_iterator first = files.lower_bound(base);
       ++base[base.size()-1];
       std::set<cmStdString>::const_iterator last = files.upper_bound(base);
@@ -1097,13 +1094,7 @@ void cmComputeLinkInformation::FindDirectoriesForLib(unsigned int lri)
       for(std::set<cmStdString>::const_iterator fi = first;
           !found && fi != last; ++fi)
         {
-        // This file name starts with the name of the library file.
-        // If the name also contains the extension then this is
-        // possibly an soname of the library.
-        if(fi->find(ext, base.size()) != fi->npos)
-          {
-          found = true;
-          }
+        found = true;
         }
 
       if(found)