|
@@ -2233,7 +2233,15 @@ void cmTarget::GetDirectLinkLibraries(const char *config,
|
|
|
&dagChecker),
|
|
&dagChecker),
|
|
|
libs);
|
|
libs);
|
|
|
|
|
|
|
|
- this->AddLinkDependentTargetsForProperties(cge->GetSeenTargetProperties());
|
|
|
|
|
|
|
+ std::set<cmStdString> seenProps = cge->GetSeenTargetProperties();
|
|
|
|
|
+ for (std::set<cmStdString>::const_iterator it = seenProps.begin();
|
|
|
|
|
+ it != seenProps.end(); ++it)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!this->GetProperty(it->c_str()))
|
|
|
|
|
+ {
|
|
|
|
|
+ this->LinkImplicitNullProperties.insert(*it);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -4519,18 +4527,6 @@ const char* cmTarget::GetExportMacro()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-//----------------------------------------------------------------------------
|
|
|
|
|
-void cmTarget::GetLinkDependentTargetsForProperty(const std::string &p,
|
|
|
|
|
- std::set<std::string> &targets)
|
|
|
|
|
-{
|
|
|
|
|
- const std::map<cmStdString, std::set<std::string> >::const_iterator findIt
|
|
|
|
|
- = this->LinkDependentProperties.find(p);
|
|
|
|
|
- if (findIt != this->LinkDependentProperties.end())
|
|
|
|
|
- {
|
|
|
|
|
- targets = findIt->second;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
|
bool cmTarget::IsNullImpliedByLinkLibraries(const std::string &p)
|
|
bool cmTarget::IsNullImpliedByLinkLibraries(const std::string &p)
|
|
|
{
|
|
{
|
|
@@ -4538,24 +4534,6 @@ bool cmTarget::IsNullImpliedByLinkLibraries(const std::string &p)
|
|
|
!= this->LinkImplicitNullProperties.end();
|
|
!= this->LinkImplicitNullProperties.end();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-//----------------------------------------------------------------------------
|
|
|
|
|
-void cmTarget::AddLinkDependentTargetsForProperties(
|
|
|
|
|
- const std::map<cmStdString, cmStdString> &map)
|
|
|
|
|
-{
|
|
|
|
|
- for (std::map<cmStdString, cmStdString>::const_iterator it = map.begin();
|
|
|
|
|
- it != map.end(); ++it)
|
|
|
|
|
- {
|
|
|
|
|
- std::vector<std::string> targets;
|
|
|
|
|
- cmSystemTools::ExpandListArgument(it->second.c_str(), targets);
|
|
|
|
|
- this->LinkDependentProperties[it->first].insert(targets.begin(),
|
|
|
|
|
- targets.end());
|
|
|
|
|
- if (!this->GetProperty(it->first.c_str()))
|
|
|
|
|
- {
|
|
|
|
|
- this->LinkImplicitNullProperties.insert(it->first);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
|
template<typename PropertyType>
|
|
template<typename PropertyType>
|
|
|
PropertyType getTypedProperty(cmTarget *tgt, const char *prop,
|
|
PropertyType getTypedProperty(cmTarget *tgt, const char *prop,
|
|
@@ -4611,9 +4589,6 @@ PropertyType checkInterfacePropertyCompatibility(cmTarget *tgt,
|
|
|
const bool explicitlySet = tgt->GetProperties()
|
|
const bool explicitlySet = tgt->GetProperties()
|
|
|
.find(p.c_str())
|
|
.find(p.c_str())
|
|
|
!= tgt->GetProperties().end();
|
|
!= tgt->GetProperties().end();
|
|
|
- std::set<std::string> dependentTargets;
|
|
|
|
|
- tgt->GetLinkDependentTargetsForProperty(p,
|
|
|
|
|
- dependentTargets);
|
|
|
|
|
const bool impliedByUse =
|
|
const bool impliedByUse =
|
|
|
tgt->IsNullImpliedByLinkLibraries(p);
|
|
tgt->IsNullImpliedByLinkLibraries(p);
|
|
|
assert((impliedByUse ^ explicitlySet)
|
|
assert((impliedByUse ^ explicitlySet)
|