cmWorkingDirectory.cxx 592 B

123456789101112131415161718192021222324
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmWorkingDirectory.h"
  4. #include "cmSystemTools.h"
  5. cmWorkingDirectory::cmWorkingDirectory(std::string const& newdir)
  6. {
  7. this->OldDir = cmSystemTools::GetCurrentWorkingDirectory();
  8. cmSystemTools::ChangeDirectory(newdir);
  9. }
  10. cmWorkingDirectory::~cmWorkingDirectory()
  11. {
  12. this->Pop();
  13. }
  14. void cmWorkingDirectory::Pop()
  15. {
  16. if (!this->OldDir.empty()) {
  17. cmSystemTools::ChangeDirectory(this->OldDir);
  18. this->OldDir.clear();
  19. }
  20. }