ENH: added better error checking for cases when there is a CMakeCache.txt file but it is not readable
This commit is contained in:
parent
8a537ce330
commit
039d4b604e
@ -745,19 +745,30 @@ void CMakeSetupDialog::OnChangeWhereBuild()
|
|||||||
|
|
||||||
cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
|
cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
|
||||||
cmCacheManager::CacheIterator it = cachem->NewIterator();
|
cmCacheManager::CacheIterator it = cachem->NewIterator();
|
||||||
if (cmSystemTools::FileExists(cache_file.c_str()) &&
|
|
||||||
cachem->LoadCache(path.c_str()) &&
|
m_GeneratorPicked = false;
|
||||||
it.Find("CMAKE_HOME_DIRECTORY"))
|
|
||||||
|
// make sure we have a normal cache file, specifically if one exists make
|
||||||
|
// sure it can be read
|
||||||
|
if (cmSystemTools::FileExists(cache_file.c_str()))
|
||||||
{
|
{
|
||||||
path = ConvertToWindowsPath(it.GetValue());
|
if (cachem->LoadCache(path.c_str()))
|
||||||
this->m_WhereSource = path.c_str();
|
{
|
||||||
this->m_WhereSourceControl.SetWindowText(this->m_WhereSource);
|
if (it.Find("CMAKE_HOME_DIRECTORY"))
|
||||||
this->OnChangeWhereSource();
|
{
|
||||||
m_GeneratorPicked = true;
|
path = ConvertToWindowsPath(it.GetValue());
|
||||||
}
|
this->m_WhereSource = path.c_str();
|
||||||
else
|
this->m_WhereSourceControl.SetWindowText(this->m_WhereSource);
|
||||||
{
|
this->OnChangeWhereSource();
|
||||||
m_GeneratorPicked = false;
|
m_GeneratorPicked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//file exists but cqnnot be read
|
||||||
|
cmSystemTools::Error("There is a CMakeCache.txt file for the current binary tree but cmake does not have permission to read it. Please check the permissions of the directory you are trying to run CMake on.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_CacheEntriesList.RemoveAll();
|
m_CacheEntriesList.RemoveAll();
|
||||||
@ -945,7 +956,17 @@ void CMakeSetupDialog::LoadCacheFromDiskToGUI()
|
|||||||
cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
|
cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
|
||||||
if(m_WhereBuild != "")
|
if(m_WhereBuild != "")
|
||||||
{
|
{
|
||||||
cachem->LoadCache(m_WhereBuild);
|
if (!cachem->LoadCache(m_WhereBuild))
|
||||||
|
{
|
||||||
|
// if it does exist, but isn;t readable then warn the user
|
||||||
|
std::string cacheFile = m_WhereBuild;
|
||||||
|
cacheFile += "/CMakeCache.txt";
|
||||||
|
if(cmSystemTools::FileExists(cacheFile.c_str()))
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("There is a CMakeCache.txt file for the current binary tree but cmake does not have permission to read it. Please check the permissions of the directory you are trying to run CMake on.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
cmCacheManager::CacheIterator itm = cachem->NewIterator();
|
cmCacheManager::CacheIterator itm = cachem->NewIterator();
|
||||||
if ( itm.Find("CMAKE_HOME_DIRECTORY"))
|
if ( itm.Find("CMAKE_HOME_DIRECTORY"))
|
||||||
{
|
{
|
||||||
|
@ -1515,7 +1515,18 @@ void cmake::AddDefaultGenerators()
|
|||||||
|
|
||||||
int cmake::LoadCache()
|
int cmake::LoadCache()
|
||||||
{
|
{
|
||||||
m_CacheManager->LoadCache(this->GetHomeOutputDirectory());
|
// could we not read the cache
|
||||||
|
if (!m_CacheManager->LoadCache(this->GetHomeOutputDirectory()))
|
||||||
|
{
|
||||||
|
// if it does exist, but isn;t readable then warn the user
|
||||||
|
std::string cacheFile = this->GetHomeOutputDirectory();
|
||||||
|
cacheFile += "/CMakeCache.txt";
|
||||||
|
if(cmSystemTools::FileExists(cacheFile.c_str()))
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("There is a CMakeCache.txt file for the current binary tree but cmake does not have permission to read it. Please check the permissions of the directory you are trying to run CMake on.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_CMakeCommand.size() < 2)
|
if (m_CMakeCommand.size() < 2)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user