Browse Source

BUG: Make sure each cmake_depends process uses the same SystemTools path translation table as the original process. This addresses problems with dependency scanning when make is run from a symlink directory pointing at the original binary tree.

Brad King 19 years ago
parent
commit
a275fefc85
1 changed files with 11 additions and 0 deletions
  1. 11 0
      Source/cmMakefileTargetGenerator.cxx

+ 11 - 0
Source/cmMakefileTargetGenerator.cxx

@@ -562,6 +562,17 @@ void cmMakefileTargetGenerator::WriteTargetDependRules()
   cmOStringStream depCmd;
   // TODO: Account for source file properties and directory-level
   // definitions when scanning for dependencies.
+#if !defined(_WIN32) || defined(__CYGWIN__)
+  // This platform supports symlinks, so cmSystemTools will translate
+  // paths.  Make sure PWD is set to the original name of the home
+  // output directory to help cmSystemTools to create the same
+  // translation table for the dependency scanning process.
+  depCmd << "cd "
+         << (this->LocalGenerator->Convert(
+               this->Makefile->GetHomeOutputDirectory(),
+               cmLocalGenerator::FULL, cmLocalGenerator::SHELL))
+         << " && ";
+#endif
   depCmd << "$(CMAKE_COMMAND) -E cmake_depends " 
          << " \""
          << this->GlobalGenerator->GetName() << "\" "