浏览代码

BUG: Make sure search paths never have double-slashes. Leading with two slashes (//) on cygwin looks like a network path and delays while waiting for a non-existent machine. This file was left out of the previous checkin for this problem.

Brad King 18 年之前
父节点
当前提交
9f982d7d39
共有 1 个文件被更改,包括 10 次插入2 次删除
  1. 10 2
      Source/cmFindLibraryCommand.cxx

+ 10 - 2
Source/cmFindLibraryCommand.cxx

@@ -181,6 +181,16 @@ std::string cmFindLibraryCommand::FindLibrary(const char* name)
   std::vector<std::string> suffixes;
   cmSystemTools::ExpandListArgument(prefixes_list, prefixes, true);
   cmSystemTools::ExpandListArgument(suffixes_list, suffixes, true);
+  // Add a trailing slash to all paths to aid the search process.
+  for(std::vector<std::string>::iterator i = this->SearchPaths.begin();
+      i != this->SearchPaths.end(); ++i)
+    {
+    std::string& p = *i;
+    if(p[p.size()-1] != '/')
+      {
+      p += "/";
+      }
+    }
   std::string tryPath;
   for(std::vector<std::string>::const_iterator p = this->SearchPaths.begin();
       p != this->SearchPaths.end(); ++p)
@@ -188,7 +198,6 @@ std::string cmFindLibraryCommand::FindLibrary(const char* name)
     if(supportFrameworks)
       {
       tryPath = *p;
-      tryPath += "/";
       tryPath += name;
       tryPath += ".framework";
       if(cmSystemTools::FileExists(tryPath.c_str())
@@ -209,7 +218,6 @@ std::string cmFindLibraryCommand::FindLibrary(const char* name)
             suffix != suffixes.end(); ++suffix)
           {
           tryPath = *p;
-          tryPath += "/";
           tryPath += *prefix;
           tryPath += name;
           tryPath += *suffix;