mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
VS: add target property VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
Fixes: #16689
This commit is contained in:
committed by
Brad King
parent
4ba2d2e3d7
commit
07ec212ae8
@@ -658,9 +658,39 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReference(
|
||||
this->WriteString("<HintPath>", 3);
|
||||
(*this->BuildFileStream) << hint << "</HintPath>\n";
|
||||
}
|
||||
this->WriteDotNetReferenceCustomTags(ref);
|
||||
this->WriteString("</Reference>\n", 2);
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteDotNetReferenceCustomTags(
|
||||
std::string const& ref)
|
||||
{
|
||||
|
||||
static const std::string refpropPrefix = "VS_DOTNET_REFERENCEPROP_";
|
||||
static const std::string refpropInfix = "_TAG_";
|
||||
const std::string refPropFullPrefix = refpropPrefix + ref + refpropInfix;
|
||||
typedef std::map<std::string, std::string> CustomTags;
|
||||
CustomTags tags;
|
||||
cmPropertyMap const& props = this->GeneratorTarget->Target->GetProperties();
|
||||
for (cmPropertyMap::const_iterator i = props.begin(); i != props.end();
|
||||
++i) {
|
||||
if (i->first.find(refPropFullPrefix) == 0) {
|
||||
std::string refTag = i->first.substr(refPropFullPrefix.length());
|
||||
std::string refVal = i->second.GetValue();
|
||||
if (!refTag.empty() && !refVal.empty()) {
|
||||
tags[refTag] = refVal;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (CustomTags::const_iterator tag = tags.begin(); tag != tags.end();
|
||||
++tag) {
|
||||
this->WriteString("<", 3);
|
||||
(*this->BuildFileStream) << tag->first << ">"
|
||||
<< cmVS10EscapeXML(tag->second) << "</"
|
||||
<< tag->first << ">\n";
|
||||
}
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup()
|
||||
{
|
||||
std::vector<cmSourceFile const*> resxObjs;
|
||||
@@ -3493,6 +3523,7 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
|
||||
(*this->BuildFileStream) << "</Project>\n";
|
||||
this->WriteString("<Name>", 3);
|
||||
(*this->BuildFileStream) << name << "</Name>\n";
|
||||
this->WriteDotNetReferenceCustomTags(name);
|
||||
this->WriteString("</ProjectReference>\n", 2);
|
||||
}
|
||||
this->WriteString("</ItemGroup>\n", 1);
|
||||
|
||||
Reference in New Issue
Block a user