1
0
Эх сурвалжийг харах

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 жил өмнө
parent
commit
144c605525

+ 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
     {