diff options
author | Brad King <brad.king@kitware.com> | 2003-05-13 20:11:14 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2003-05-13 20:11:14 (GMT) |
commit | 20b198835cd9d58fd1e98dc2c6858659a3c9b288 (patch) | |
tree | a1f6ede6109b7e7ee455b568cfcdae716f5499fa | |
parent | a30148e640035b3cf03c9b6deded931eda5c1eb0 (diff) | |
download | CMake-20b198835cd9d58fd1e98dc2c6858659a3c9b288.zip CMake-20b198835cd9d58fd1e98dc2c6858659a3c9b288.tar.gz CMake-20b198835cd9d58fd1e98dc2c6858659a3c9b288.tar.bz2 |
ENH: When the initially configured generator is invalid, allow the user to change the generator without deleting the cache by hand.
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 10 | ||||
-rw-r--r-- | Source/cmake.cxx | 8 |
2 files changed, 13 insertions, 5 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 5589333..14ecd22 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -57,11 +57,11 @@ void cmGlobalGenerator::EnableLanguage(const char* lang, if(!mf->GetDefinition("CMAKE_MAKE_PROGRAM") || cmSystemTools::IsOff(mf->GetDefinition("CMAKE_MAKE_PROGRAM"))) { - cmSystemTools::Error("CMake was unable to find a build program " - "corresponding to the generator you have selected. " - "CMAKE_MAKE_PROGRAM is not set. You probably " - "need to re-run CMake and select a different " - "generator."); + cmOStringStream err; + err << "CMake was unable to find a build program corresponding to \"" + << this->GetName() << "\". CMAKE_MAKE_PROGRAM is not set. You " + << "probably need to select a different build tool."; + cmSystemTools::Error(err.str().c_str()); cmSystemTools::SetFatalErrorOccured(); return; } diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 813a39d..f4d3372 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -890,6 +890,14 @@ int cmake::Configure() cmCacheManager::PATH); } + if(cmSystemTools::GetFatalErrorOccured() && + (!this->m_CacheManager->GetCacheValue("CMAKE_MAKE_PROGRAM") || + cmSystemTools::IsOff(this->m_CacheManager->GetCacheValue("CMAKE_MAKE_PROGRAM")))) + { + // We must have a bad generator selection. Wipe the cache entry so the + // user can select another. + m_CacheManager->RemoveCacheEntry("CMAKE_GENERATOR"); + } this->m_CacheManager->SaveCache(this->GetHomeOutputDirectory()); if(cmSystemTools::GetErrorOccuredFlag()) { |