BUG: fix cmake listfile stack: if a file could not be opened, remove it from

the stack (usually CMakeCInformation.cmake and CMakeCXXInformation.cmake
which both put Linux-gcc.cmake on the stack without removing it again:
INCLUDE(... OPTIONAL) )
STYLE: better readable output formatting of the listfile stack, now in the
same order as in gdb or with include files

Alex
This commit is contained in:
Alexander Neundorf 2007-05-01 11:46:47 -04:00
parent c7873ad44a
commit ef0b9ff2cc
1 changed files with 15 additions and 10 deletions

View File

@ -446,10 +446,12 @@ bool cmMakefile::ReadListFile(const char* filename_in,
// push the listfile onto the stack // push the listfile onto the stack
this->ListFileStack.push_back(filenametoread); this->ListFileStack.push_back(filenametoread);
cmListFile cacheFile; cmListFile cacheFile;
if( !cacheFile.ParseFile(filenametoread, requireProjectCommand) ) if( !cacheFile.ParseFile(filenametoread, requireProjectCommand) )
{ {
// pop the listfile off the stack
this->ListFileStack.pop_back();
this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str()); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile.c_str());
this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str()); this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile.c_str());
return false; return false;
@ -2753,17 +2755,20 @@ std::vector<cmTest*> *cmMakefile::GetTests()
std::string cmMakefile::GetListFileStack() std::string cmMakefile::GetListFileStack()
{ {
std::string tmp; cmOStringStream tmp;
for (std::deque<cmStdString>::iterator i = this->ListFileStack.begin(); unsigned int depth = this->ListFileStack.size();
i != this->ListFileStack.end(); ++i) std::deque<cmStdString>::iterator it = this->ListFileStack.end();
do
{ {
if (i != this->ListFileStack.begin()) --it;
{ tmp << "\n[";
tmp += ";"; tmp << depth;
} tmp << "]\t";
tmp += *i; tmp << *it;
depth--;
} }
return tmp; while (it != this->ListFileStack.begin());
return tmp.str();
} }
// define properties // define properties