From 1ac5fb545f5287f49d6b4a397d69f1a6051be1f3 Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Mon, 16 Dec 2002 12:13:37 -0500 Subject: [PATCH] Fix switching from local to global generation when cmake version changes or when things change inside version --- Source/cmake.cxx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index afb93783f..1af64c2c1 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -869,11 +869,20 @@ int cmake::Run(const std::vector& args) // Add any cache args this->SetCacheArgs(args); + std::string systemFile = this->GetHomeOutputDirectory(); + systemFile += "/CMakeSystem.cmake"; + int ret = 0; - // if not local or the cmake version has changed - // since the last run of cmake, run a global generate - if(!m_Local || !this->CacheVersionMatches()) + // if not local or the cmake version has changed since the last run + // of cmake, or CMakeSystem.cmake file is not in the root binary + // directory, run a global generate + if(!m_Local || !this->CacheVersionMatches() || + !cmSystemTools::FileExists(systemFile.c_str()) ) { + // If we are doing global generate, we better set start and start + // output directory to the root of the project. + this->SetStartDirectory(this->GetHomeDirectory()); + this->SetStartOutputDirectory(this->GetHomeOutputDirectory()); bool saveLocalFlag = m_Local; m_Local = false; ret = this->Configure();