summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmGlobalGenerator.cxx10
-rw-r--r--Source/cmake.cxx8
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())
{