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:
parent
6ece2df941
commit
3b60232ebc
|
@ -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"))
|
||||
|
|
Loading…
Reference in New Issue