VS: Port target depends to cmGeneratorTarget
This commit is contained in:
parent
b13e26e278
commit
330bfa8336
@ -299,7 +299,7 @@ void cmGlobalVisualStudio6Generator::WriteProject(std::ostream& fout,
|
|||||||
fout << "Package=<5>\n{{{\n}}}\n\n";
|
fout << "Package=<5>\n{{{\n}}}\n\n";
|
||||||
fout << "Package=<4>\n";
|
fout << "Package=<4>\n";
|
||||||
fout << "{{{\n";
|
fout << "{{{\n";
|
||||||
VSDependSet const& depends = this->VSTargetDepends[target->Target];
|
VSDependSet const& depends = this->VSTargetDepends[target];
|
||||||
for(VSDependSet::const_iterator di = depends.begin();
|
for(VSDependSet::const_iterator di = depends.begin();
|
||||||
di != depends.end(); ++di)
|
di != depends.end(); ++di)
|
||||||
{
|
{
|
||||||
|
@ -206,7 +206,7 @@ cmGlobalVisualStudio71Generator
|
|||||||
const std::string&,
|
const std::string&,
|
||||||
const char*, cmGeneratorTarget const* target)
|
const char*, cmGeneratorTarget const* target)
|
||||||
{
|
{
|
||||||
VSDependSet const& depends = this->VSTargetDepends[target->Target];
|
VSDependSet const& depends = this->VSTargetDepends[target];
|
||||||
for(VSDependSet::const_iterator di = depends.begin();
|
for(VSDependSet::const_iterator di = depends.begin();
|
||||||
di != depends.end(); ++di)
|
di != depends.end(); ++di)
|
||||||
{
|
{
|
||||||
|
@ -730,7 +730,7 @@ cmGlobalVisualStudio7Generator
|
|||||||
{
|
{
|
||||||
int depcount = 0;
|
int depcount = 0;
|
||||||
std::string dspguid = this->GetGUID(dspname);
|
std::string dspguid = this->GetGUID(dspname);
|
||||||
VSDependSet const& depends = this->VSTargetDepends[target->Target];
|
VSDependSet const& depends = this->VSTargetDepends[target];
|
||||||
for(VSDependSet::const_iterator di = depends.begin();
|
for(VSDependSet::const_iterator di = depends.begin();
|
||||||
di != depends.end(); ++di)
|
di != depends.end(); ++di)
|
||||||
{
|
{
|
||||||
|
@ -380,7 +380,7 @@ bool cmGlobalVisualStudioGenerator::ComputeTargetDepends()
|
|||||||
for(std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
|
for(std::vector<cmGeneratorTarget*>::iterator ti = targets.begin();
|
||||||
ti != targets.end(); ++ti)
|
ti != targets.end(); ++ti)
|
||||||
{
|
{
|
||||||
this->ComputeVSTargetDepends(*(*ti)->Target);
|
this->ComputeVSTargetDepends(*ti);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -394,13 +394,14 @@ static bool VSLinkable(cmGeneratorTarget const* t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
|
void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(
|
||||||
|
cmGeneratorTarget* target)
|
||||||
{
|
{
|
||||||
if(this->VSTargetDepends.find(&target) != this->VSTargetDepends.end())
|
if(this->VSTargetDepends.find(target) != this->VSTargetDepends.end())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
VSDependSet& vsTargetDepend = this->VSTargetDepends[&target];
|
VSDependSet& vsTargetDepend = this->VSTargetDepends[target];
|
||||||
// VS <= 7.1 has two behaviors that affect solution dependencies.
|
// VS <= 7.1 has two behaviors that affect solution dependencies.
|
||||||
//
|
//
|
||||||
// (1) Solution-level dependencies between a linkable target and a
|
// (1) Solution-level dependencies between a linkable target and a
|
||||||
@ -420,19 +421,18 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
|
|||||||
// leaving them out for the static library itself but following them
|
// leaving them out for the static library itself but following them
|
||||||
// transitively for other targets.
|
// transitively for other targets.
|
||||||
|
|
||||||
bool allowLinkable = (target.GetType() != cmState::STATIC_LIBRARY &&
|
bool allowLinkable = (target->GetType() != cmState::STATIC_LIBRARY &&
|
||||||
target.GetType() != cmState::SHARED_LIBRARY &&
|
target->GetType() != cmState::SHARED_LIBRARY &&
|
||||||
target.GetType() != cmState::MODULE_LIBRARY &&
|
target->GetType() != cmState::MODULE_LIBRARY &&
|
||||||
target.GetType() != cmState::EXECUTABLE);
|
target->GetType() != cmState::EXECUTABLE);
|
||||||
|
|
||||||
cmGeneratorTarget* gt = this->GetGeneratorTarget(&target);
|
TargetDependSet const& depends = this->GetTargetDirectDepends(target);
|
||||||
TargetDependSet const& depends = this->GetTargetDirectDepends(gt);
|
|
||||||
|
|
||||||
// Collect implicit link dependencies (target_link_libraries).
|
// Collect implicit link dependencies (target_link_libraries).
|
||||||
// Static libraries cannot depend on their link implementation
|
// Static libraries cannot depend on their link implementation
|
||||||
// due to behavior (2), but they do not really need to.
|
// due to behavior (2), but they do not really need to.
|
||||||
std::set<cmTarget const*> linkDepends;
|
std::set<cmTarget const*> linkDepends;
|
||||||
if(target.GetType() != cmState::STATIC_LIBRARY)
|
if(target->GetType() != cmState::STATIC_LIBRARY)
|
||||||
{
|
{
|
||||||
for(TargetDependSet::const_iterator di = depends.begin();
|
for(TargetDependSet::const_iterator di = depends.begin();
|
||||||
di != depends.end(); ++di)
|
di != depends.end(); ++di)
|
||||||
@ -460,9 +460,9 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
|
|||||||
// Collect all targets linked by this target so we can avoid
|
// Collect all targets linked by this target so we can avoid
|
||||||
// intermediate targets below.
|
// intermediate targets below.
|
||||||
TargetSet linked;
|
TargetSet linked;
|
||||||
if(target.GetType() != cmState::STATIC_LIBRARY)
|
if(target->GetType() != cmState::STATIC_LIBRARY)
|
||||||
{
|
{
|
||||||
linked = this->GetTargetLinkClosure(gt);
|
linked = this->GetTargetLinkClosure(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit link dependencies.
|
// Emit link dependencies.
|
||||||
|
@ -122,9 +122,9 @@ protected:
|
|||||||
|
|
||||||
virtual bool ComputeTargetDepends();
|
virtual bool ComputeTargetDepends();
|
||||||
class VSDependSet: public std::set<std::string> {};
|
class VSDependSet: public std::set<std::string> {};
|
||||||
class VSDependMap: public std::map<cmTarget const*, VSDependSet> {};
|
class VSDependMap: public std::map<cmGeneratorTarget const*, VSDependSet> {};
|
||||||
VSDependMap VSTargetDepends;
|
VSDependMap VSTargetDepends;
|
||||||
void ComputeVSTargetDepends(cmTarget&);
|
void ComputeVSTargetDepends(cmGeneratorTarget *);
|
||||||
|
|
||||||
bool CheckTargetLinks(cmTarget& target, const std::string& name);
|
bool CheckTargetLinks(cmTarget& target, const std::string& name);
|
||||||
std::string GetUtilityForTarget(cmTarget& target, const std::string&);
|
std::string GetUtilityForTarget(cmTarget& target, const std::string&);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user