Browse Source

Set current directory variables in CTest scripts

The commit "Fix get_filename_component ABSOLUTE mode" broke the code

  get_filename_component(cwd . ABSOLUTE)

because CTest scripts did not make cmMakefile::GetCurrentDirectory()
available.  This commit fixes the problem by setting the proper
information on CTest script instances of cmMakefile.

This also makes CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR
available to CTest scripts.  They are set to the working directory at
script startup.
Brad King 16 years ago
parent
commit
a48f29c904
1 changed files with 6 additions and 0 deletions
  1. 6 0
      Source/CTest/cmCTestScriptHandler.cxx

+ 6 - 0
Source/CTest/cmCTestScriptHandler.cxx

@@ -337,6 +337,12 @@ void cmCTestScriptHandler::CreateCMake()
   this->LocalGenerator = this->GlobalGenerator->CreateLocalGenerator();
   this->Makefile = this->LocalGenerator->GetMakefile();
 
+  // Set CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR.
+  // Also, some commands need Makefile->GetCurrentDirectory().
+  std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
+  this->Makefile->SetStartDirectory(cwd.c_str());
+  this->Makefile->SetStartOutputDirectory(cwd.c_str());
+
   // remove all cmake commands which are not scriptable, since they can't be 
   // used in ctest scripts
   this->CMake->RemoveUnscriptableCommands();