Extract the AddTargetNamespace method.
This commit is contained in:
parent
cb1afbf466
commit
b6036d104a
|
@ -183,6 +183,41 @@ void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget *target,
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
cmExportFileGenerator::AddTargetNamespace(std::string &input,
|
||||
cmTarget* target,
|
||||
std::vector<std::string> &missingTargets)
|
||||
{
|
||||
cmMakefile *mf = target->GetMakefile();
|
||||
|
||||
cmTarget *tgt = mf->FindTargetToUse(input.c_str());
|
||||
if (!tgt)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(tgt->IsImported())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if(this->ExportedTargets.find(tgt) != this->ExportedTargets.end())
|
||||
{
|
||||
input = this->Namespace + input;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string namespacedTarget;
|
||||
this->HandleMissingTarget(namespacedTarget, missingTargets,
|
||||
mf, target, tgt);
|
||||
if (!namespacedTarget.empty())
|
||||
{
|
||||
input = namespacedTarget;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
|
||||
|
@ -212,45 +247,17 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
|
|||
continue;
|
||||
}
|
||||
|
||||
const std::string targetName = input.substr(nameStartPos,
|
||||
std::string targetName = input.substr(nameStartPos,
|
||||
commaPos - nameStartPos);
|
||||
|
||||
pos = nameStartPos; // We're not going to replace the entire expression,
|
||||
// but only the target parameter.
|
||||
if (cmTarget *tgt = mf->FindTargetToUse(targetName.c_str()))
|
||||
{
|
||||
if(tgt->IsImported())
|
||||
{
|
||||
pos += targetName.size();
|
||||
}
|
||||
else if(this->ExportedTargets.find(tgt) != this->ExportedTargets.end())
|
||||
{
|
||||
input.replace(pos, targetName.size(),
|
||||
this->Namespace + targetName);
|
||||
pos += this->Namespace.size() + targetName.size();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string namespacedTarget;
|
||||
this->HandleMissingTarget(namespacedTarget, missingTargets,
|
||||
mf, target, tgt);
|
||||
if (!namespacedTarget.empty())
|
||||
{
|
||||
input.replace(pos, targetName.size(), namespacedTarget);
|
||||
pos += namespacedTarget.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (!this->AddTargetNamespace(targetName, target, missingTargets))
|
||||
{
|
||||
errorString = "$<TARGET_PROPERTY:" + targetName + ",prop> requires "
|
||||
"its first parameter to be a reachable target.";
|
||||
}
|
||||
lastPos = pos;
|
||||
if (!errorString.empty())
|
||||
{
|
||||
break;
|
||||
}
|
||||
input.replace(nameStartPos, commaPos - nameStartPos, targetName);
|
||||
lastPos = pos + targetName.size();
|
||||
}
|
||||
if (!errorString.empty())
|
||||
{
|
||||
|
@ -267,51 +274,24 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
|
|||
if (endPos == input.npos)
|
||||
{
|
||||
errorString = "$<TARGET_NAME:...> expression incomplete";
|
||||
break;
|
||||
}
|
||||
const std::string targetName = input.substr(nameStartPos,
|
||||
std::string targetName = input.substr(nameStartPos,
|
||||
endPos - nameStartPos);
|
||||
if(targetName.find("$<") != input.npos)
|
||||
{
|
||||
errorString = "$<TARGET_NAME:...> requires its parameter to be a "
|
||||
"literal.";
|
||||
break;
|
||||
}
|
||||
if (cmTarget *tgt = mf->FindTargetToUse(targetName.c_str()))
|
||||
{
|
||||
if(tgt->IsImported())
|
||||
{
|
||||
input.replace(pos, sizeof("$<TARGET_NAME:") + targetName.size(),
|
||||
targetName);
|
||||
pos += sizeof("$<TARGET_NAME:") + targetName.size();
|
||||
}
|
||||
else if(this->ExportedTargets.find(tgt) != this->ExportedTargets.end())
|
||||
{
|
||||
input.replace(pos, sizeof("$<TARGET_NAME:") + targetName.size(),
|
||||
this->Namespace + targetName);
|
||||
pos += sizeof("$<TARGET_NAME:") + targetName.size();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string namespacedTarget;
|
||||
this->HandleMissingTarget(namespacedTarget, missingTargets,
|
||||
mf, target, tgt);
|
||||
if (!namespacedTarget.empty())
|
||||
{
|
||||
input.replace(pos, sizeof("$<TARGET_NAME:") + targetName.size(),
|
||||
namespacedTarget);
|
||||
pos += sizeof("$<TARGET_NAME:") + targetName.size();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (!this->AddTargetNamespace(targetName, target, missingTargets))
|
||||
{
|
||||
errorString = "$<TARGET_NAME:...> requires its parameter to be a "
|
||||
"reachable target.";
|
||||
}
|
||||
lastPos = pos;
|
||||
if (!errorString.empty())
|
||||
{
|
||||
break;
|
||||
}
|
||||
input.replace(pos, endPos - pos + 1, targetName);
|
||||
lastPos = endPos;
|
||||
}
|
||||
if (!errorString.empty())
|
||||
{
|
||||
|
@ -397,9 +377,6 @@ cmExportFileGenerator
|
|||
return;
|
||||
}
|
||||
|
||||
// Get the makefile in which to lookup target information.
|
||||
cmMakefile* mf = target->GetMakefile();
|
||||
|
||||
// Construct the property value.
|
||||
std::string link_libs;
|
||||
const char* sep = "";
|
||||
|
@ -410,33 +387,9 @@ cmExportFileGenerator
|
|||
link_libs += sep;
|
||||
sep = ";";
|
||||
|
||||
// Append this entry.
|
||||
if(cmTarget* tgt = mf->FindTargetToUse(li->c_str()))
|
||||
{
|
||||
// This is a target.
|
||||
if(tgt->IsImported())
|
||||
{
|
||||
// The target is imported (and therefore is not in the
|
||||
// export). Append the raw name.
|
||||
link_libs += *li;
|
||||
}
|
||||
else if(this->ExportedTargets.find(tgt) != this->ExportedTargets.end())
|
||||
{
|
||||
// The target is in the export. Append it with the export
|
||||
// namespace.
|
||||
link_libs += this->Namespace;
|
||||
link_libs += *li;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->HandleMissingTarget(link_libs, missingTargets, mf, target, tgt);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Append the raw name.
|
||||
link_libs += *li;
|
||||
}
|
||||
std::string temp = *li;
|
||||
this->AddTargetNamespace(temp, target, missingTargets);
|
||||
link_libs += temp;
|
||||
}
|
||||
|
||||
// Store the property.
|
||||
|
|
|
@ -128,6 +128,10 @@ private:
|
|||
cmGeneratorExpression::PreprocessContext,
|
||||
ImportPropertyMap &properties,
|
||||
std::vector<std::string> &missingTargets);
|
||||
|
||||
bool AddTargetNamespace(std::string &input, cmTarget* target,
|
||||
std::vector<std::string> &missingTargets);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue