cmake: Preserve cached CMAKE_GENERATOR when an error occurs (#15640)

Since commit v2.4.0~4158 (When the initially configured generator is
invalid, allow the user to change the generator without deleting the cache
by hand, 2003-05-13) we remove CMAKE_GENERATOR from the cache if an error
occurs and CMAKE_MAKE_PROGRAM is not cached.  This worked at the time
because all generators initialized the CMAKE_MAKE_PROGRAM cache entry.
Since commit v3.0.0-rc1~260^2~4 (VS: Switch to internal CMAKE_MAKE_PROGRAM
lookup by generators, 2013-11-15) and commit v3.2.0-rc1~39^2 (Xcode:
Switch to internal CMAKE_MAKE_PROGRAM lookup by generator, 2015-01-28) the
VS and Xcode generators no longer store CMAKE_MAKE_PROGRAM in the cache.
Therefore any error during generation would wipe out CMAKE_GENERATOR from
the cache and cause the next configuration to choose a default generator.

Simply drop the behavior introduced by the original commit and always
preserve CMAKE_GENERATOR.  Since the time that behavior was introduced a
lot more state is now saved in CMakeCache.txt and CMakeFiles/ during the
initial configuration so it is not safe to change generators without
starting fresh anyway.
This commit is contained in:
Brad King 2015-07-07 14:12:38 -04:00
parent 6ece2df941
commit 3b60232ebc
1 changed files with 0 additions and 13 deletions

View File

@ -1439,19 +1439,6 @@ int cmake::ActualConfigure()
}
}
if(cmSystemTools::GetFatalErrorOccured())
{
const char* makeProgram =
this->State->GetInitializedCacheValue("CMAKE_MAKE_PROGRAM");
if (!makeProgram || cmSystemTools::IsOff(makeProgram))
{
// We must have a bad generator selection. Wipe the cache entry so the
// user can select another.
this->State->RemoveCacheEntry("CMAKE_GENERATOR");
this->State->RemoveCacheEntry("CMAKE_EXTRA_GENERATOR");
}
}
cmMakefile* mf=this->GlobalGenerator->GetLocalGenerators()[0]->GetMakefile();
if (mf->IsOn("CTEST_USE_LAUNCHERS")
&& !this->State->GetGlobalProperty("RULE_LAUNCH_COMPILE"))