Store direct dependencies in solutions for VS >= 8

Since commit bc43b0f2 (Do not link library dependencies in VS solutions,
2009-10-20) CMake disables for VS >= 8 linking of a target to libraries
that happen to be listed as solution-level dependencies.  Therefore we
can list the direct dependencies of each target in the solution file and
let VS handle transitive dependencies automatically.
This commit is contained in:
Brad King 2010-08-20 14:07:02 -04:00
parent f2b4a46677
commit 1a0c166a26
3 changed files with 18 additions and 3 deletions

View File

@ -699,9 +699,8 @@ bool cmGlobalGenerator::IsDependedOn(const char* project,
l != targets.end(); l++)
{
cmTarget& target = l->second;
std::set<cmStdString>::const_iterator pos =
target.GetUtilities().find(targetIn->GetName());
if(pos != target.GetUtilities().end())
TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target);
if(tgtdeps.count(targetIn))
{
return true;
}

View File

@ -288,6 +288,20 @@ cmGlobalVisualStudio8Generator
}
}
//----------------------------------------------------------------------------
void cmGlobalVisualStudio8Generator::WriteProjectDepends(
std::ostream& fout, const char*, const char*, cmTarget& t)
{
TargetDependSet const& unordered = this->GetTargetDirectDepends(t);
OrderedTargetDependSet depends(unordered);
for(OrderedTargetDependSet::const_iterator i = depends.begin();
i != depends.end(); ++i)
{
std::string guid = this->GetGUID((*i)->GetName());
fout << "\t\t{" << guid << "} = {" << guid << "}\n";
}
}
//----------------------------------------------------------------------------
bool cmGlobalVisualStudio8Generator::NeedLinkLibraryDependencies(
cmTarget& target)

View File

@ -78,6 +78,8 @@ protected:
virtual void WriteProjectConfigurations(std::ostream& fout,
const char* name,
bool partOfDefaultBuild);
virtual void WriteProjectDepends(std::ostream& fout, const char* name,
const char* path, cmTarget &t);
const char* ArchitectureId;
};