Browse Source

BUG: don't report changed compiler variables if the path to the compiler
differs only e.g. a double slash somewhere instead only one slash as
directory separator (#8890)

Alex

Alexander Neundorf 16 năm trước cách đây
mục cha
commit
2ab4e7df81
1 tập tin đã thay đổi với 20 bổ sung12 xóa
  1. 20 12
      Source/cmGlobalUnixMakefileGenerator3.cxx

+ 20 - 12
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -95,20 +95,28 @@ void cmGlobalUnixMakefileGenerator3
     std::string changeVars;
     if(cname && (path != cname) && (optional==false))
       {
-      const char* cvars = 
-        this->GetCMakeInstance()->GetProperty(
-          "__CMAKE_DELETE_CACHE_CHANGE_VARS_");
-      if(cvars)
-        {
-        changeVars += cvars;
+      std::string cnameString = cname;
+      std::string pathString = path;
+      // get rid of potentially multiple slashes:
+      cmSystemTools::ConvertToUnixSlashes(cnameString);
+      cmSystemTools::ConvertToUnixSlashes(pathString);
+      if (cnameString != pathString)
+        { 
+        const char* cvars = 
+          this->GetCMakeInstance()->GetProperty(
+            "__CMAKE_DELETE_CACHE_CHANGE_VARS_");
+        if(cvars)
+          {
+          changeVars += cvars;
+          changeVars += ";";
+          }
+        changeVars += langComp;
         changeVars += ";";
+        changeVars += cname;
+        this->GetCMakeInstance()->SetProperty(
+          "__CMAKE_DELETE_CACHE_CHANGE_VARS_",
+          changeVars.c_str());
         }
-      changeVars += langComp;
-      changeVars += ";";
-      changeVars += cname;
-      this->GetCMakeInstance()->SetProperty(
-        "__CMAKE_DELETE_CACHE_CHANGE_VARS_",
-        changeVars.c_str());
       }
     mf->AddCacheDefinition(langComp.c_str(), path.c_str(),
                            doc.c_str(), cmCacheManager::FILEPATH);