diff options
-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()) { |