BUG: fix bug in depends
This commit is contained in:
parent
ad3478cd1d
commit
5a676508c4
|
@ -91,6 +91,31 @@ void cmLocalUnixMakefileGenerator::Generate(bool fromTheTop)
|
|||
this->OutputMakefile(dest.c_str(), !fromTheTop);
|
||||
}
|
||||
|
||||
void
|
||||
cmLocalUnixMakefileGenerator::AddDependenciesToSourceFile(cmDependInformation const *info,
|
||||
cmSourceFile *i,
|
||||
std::set<cmDependInformation const*> *visited)
|
||||
{
|
||||
// add info to the visited set
|
||||
visited->insert(info);
|
||||
|
||||
// add this dependency and the recurse
|
||||
if(info->m_FullPath != "")
|
||||
{
|
||||
// now recurse with info's dependencies
|
||||
for(cmDependInformation::DependencySet::const_iterator d =
|
||||
info->m_DependencySet.begin();
|
||||
d != info->m_DependencySet.end(); ++d)
|
||||
{
|
||||
if (visited->find(*d) == visited->end())
|
||||
{
|
||||
i->GetDepends().push_back((*d)->m_FullPath);
|
||||
this->AddDependenciesToSourceFile(*d,i,visited);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cmLocalUnixMakefileGenerator::ProcessDepends(const cmMakeDepend &md)
|
||||
{
|
||||
// Now create cmDependInformation objects for files in the directory
|
||||
|
@ -109,21 +134,14 @@ void cmLocalUnixMakefileGenerator::ProcessDepends(const cmMakeDepend &md)
|
|||
|
||||
// Delete any hints from the source file's dependencies.
|
||||
(*i)->GetDepends().erase((*i)->GetDepends().begin(), (*i)->GetDepends().end());
|
||||
|
||||
std::cerr << "get depends for " << (*i)->GetFullPath() << "\n";
|
||||
|
||||
// Now add the real dependencies for the file.
|
||||
if (info)
|
||||
{
|
||||
for(cmDependInformation::DependencySet::const_iterator d =
|
||||
info->m_DependencySet.begin();
|
||||
d != info->m_DependencySet.end(); ++d)
|
||||
{
|
||||
// Make sure the full path is given. If not, the dependency was
|
||||
// not found.
|
||||
if((*d)->m_FullPath != "")
|
||||
{
|
||||
(*i)->GetDepends().push_back((*d)->m_FullPath);
|
||||
}
|
||||
}
|
||||
// create visited set
|
||||
std::set<cmDependInformation const*> visited;
|
||||
this->AddDependenciesToSourceFile(info,*i, &visited);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "cmLocalGenerator.h"
|
||||
|
||||
class cmDependInformation;
|
||||
class cmMakeDepend;
|
||||
class cmTarget;
|
||||
class cmSourceFile;
|
||||
|
@ -77,6 +78,9 @@ public:
|
|||
void SetMakefileVariableSize(int s) { m_MakefileVariableSize = s; }
|
||||
|
||||
protected:
|
||||
void AddDependenciesToSourceFile(cmDependInformation const*info,
|
||||
cmSourceFile *i,
|
||||
std::set<cmDependInformation const*> *visited);
|
||||
virtual const char* GetSafeDefinition(const char*);
|
||||
virtual void ProcessDepends(const cmMakeDepend &md);
|
||||
virtual void OutputMakefile(const char* file, bool withDepends);
|
||||
|
|
|
@ -24,12 +24,6 @@ void cmDependInformation::AddDependencies(cmDependInformation* info)
|
|||
if(this != info)
|
||||
{
|
||||
m_DependencySet.insert(info);
|
||||
for (cmDependInformation::DependencySet::const_iterator
|
||||
d = info->m_DependencySet.begin();
|
||||
d != info->m_DependencySet.end(); ++d)
|
||||
{
|
||||
m_DependencySet.insert(*d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue