ENH: if CMakeCache.txt has been removed, then automatically remove CMakefiles/*.cmake
This commit is contained in:
parent
15b5869b46
commit
8cdb87eaa7
|
@ -19,6 +19,7 @@
|
||||||
#include "cmSystemTools.h"
|
#include "cmSystemTools.h"
|
||||||
#include "cmCacheManager.h"
|
#include "cmCacheManager.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMakefile.h"
|
||||||
|
#include "cmGlob.h"
|
||||||
#include <cmsys/Directory.hxx>
|
#include <cmsys/Directory.hxx>
|
||||||
|
|
||||||
#include <cmsys/RegularExpression.hxx>
|
#include <cmsys/RegularExpression.hxx>
|
||||||
|
@ -154,6 +155,20 @@ bool cmCacheManager::ParseEntry(const char* entry,
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmCacheManager::CleanCMakeFiles(const char* path)
|
||||||
|
{
|
||||||
|
std::string glob = path;
|
||||||
|
glob += "/CMakeFiles/*.cmake";
|
||||||
|
cmGlob globIt;
|
||||||
|
globIt.FindFiles(glob);
|
||||||
|
std::vector<std::string> files = globIt.GetFiles();
|
||||||
|
for(std::vector<std::string>::iterator i = files.begin();
|
||||||
|
i != files.end(); ++i)
|
||||||
|
{
|
||||||
|
cmSystemTools::RemoveFile(i->c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool cmCacheManager::LoadCache(const char* path,
|
bool cmCacheManager::LoadCache(const char* path,
|
||||||
bool internal,
|
bool internal,
|
||||||
std::set<cmStdString>& excludes,
|
std::set<cmStdString>& excludes,
|
||||||
|
@ -166,6 +181,12 @@ bool cmCacheManager::LoadCache(const char* path,
|
||||||
{
|
{
|
||||||
m_Cache.clear();
|
m_Cache.clear();
|
||||||
}
|
}
|
||||||
|
if(!cmSystemTools::FileExists(cacheFile.c_str()))
|
||||||
|
{
|
||||||
|
this->CleanCMakeFiles(path);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
std::ifstream fin(cacheFile.c_str());
|
std::ifstream fin(cacheFile.c_str());
|
||||||
if(!fin)
|
if(!fin)
|
||||||
{
|
{
|
||||||
|
|
|
@ -150,6 +150,8 @@ protected:
|
||||||
|
|
||||||
///! Get a cache entry object for a key
|
///! Get a cache entry object for a key
|
||||||
CacheEntry *GetCacheEntry(const char *key);
|
CacheEntry *GetCacheEntry(const char *key);
|
||||||
|
///! Clean out the CMakeFiles directory if no CMakeCache.txt
|
||||||
|
void CleanCMakeFiles(const char* path);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef std::map<cmStdString, CacheEntry> CacheEntryMap;
|
typedef std::map<cmStdString, CacheEntry> CacheEntryMap;
|
||||||
|
|
Loading…
Reference in New Issue