Преглед изворни кода

BUG: Need to include relative path top information in directory information so that relative path conversion during dependency generation works with the same rules as project generation.

Brad King пре 18 година
родитељ
комит
144c605525
1 измењених фајлова са 25 додато и 2 уклоњено
  1. 25 2
      Source/cmLocalUnixMakefileGenerator3.cxx

+ 25 - 2
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -411,6 +411,15 @@ void cmLocalUnixMakefileGenerator3::WriteDirectoryInformationFile()
   // Write the do not edit header.
   this->WriteDisclaimer(infoFileStream);
 
+  // Setup relative path conversion tops.
+  infoFileStream
+    << "# Relative path conversion top directories.\n"
+    << "SET(CMAKE_RELATIVE_PATH_TOP_SOURCE \"" << this->RelativePathTopSource
+    << "\")\n"
+    << "SET(CMAKE_RELATIVE_PATH_TOP_BINARY \"" << this->RelativePathTopBinary
+    << "\")\n"
+    << "\n";
+
   // Tell the dependency scanner to use unix paths if necessary.
   if(cmSystemTools::GetForceUnixPaths())
     {
@@ -1155,10 +1164,11 @@ bool cmLocalUnixMakefileGenerator3::ScanDependencies(const char* tgtInfo)
     {
     cmSystemTools::Error("Target DependInfo.cmake file not found");    
     }
-  
-  // Test whether we need to force Unix paths.
+
+  // Lookup useful directory information.
   if(haveDirectoryInfo)
     {
+    // Test whether we need to force Unix paths.
     if(const char* force = mf->GetDefinition("CMAKE_FORCE_UNIX_PATHS"))
       {
       if(!cmSystemTools::IsOff(force))
@@ -1166,6 +1176,19 @@ bool cmLocalUnixMakefileGenerator3::ScanDependencies(const char* tgtInfo)
         cmSystemTools::SetForceUnixPaths(true);
         }
       }
+
+    // Setup relative path top directories.
+    this->RelativePathsConfigured = true;
+    if(const char* relativePathTopSource =
+       mf->GetDefinition("CMAKE_RELATIVE_PATH_TOP_SOURCE"))
+      {
+      this->RelativePathTopSource = relativePathTopSource;
+      }
+    if(const char* relativePathTopBinary =
+       mf->GetDefinition("CMAKE_RELATIVE_PATH_TOP_BINARY"))
+      {
+      this->RelativePathTopBinary = relativePathTopBinary;
+      }
     }
   else
     {