Implement properties VS_GLOBAL_SECTION_*
Add properties VS_GLOBAL_SECTION_PRE_<name> and VS_GLOBAL_SECTION_POST_<name>, which can be used to generate custom GlobalSection-s in the .sln file.
This commit is contained in:
parent
57cadc179c
commit
2c9196207b
|
@ -128,6 +128,9 @@ void cmGlobalVisualStudio71Generator
|
|||
fout << "\tEndGlobalSection\n";
|
||||
}
|
||||
|
||||
// Write out global sections
|
||||
this->WriteSLNGlobalSections(fout, root);
|
||||
|
||||
// Write the footer for the SLN file
|
||||
this->WriteSLNFooter(fout);
|
||||
}
|
||||
|
@ -293,17 +296,6 @@ void cmGlobalVisualStudio71Generator
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Standard end of dsw file
|
||||
void cmGlobalVisualStudio71Generator::WriteSLNFooter(std::ostream& fout)
|
||||
{
|
||||
fout << "\tGlobalSection(ExtensibilityGlobals) = postSolution\n"
|
||||
<< "\tEndGlobalSection\n"
|
||||
<< "\tGlobalSection(ExtensibilityAddIns) = postSolution\n"
|
||||
<< "\tEndGlobalSection\n"
|
||||
<< "EndGlobal\n";
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// ouput standard header for dsw file
|
||||
void cmGlobalVisualStudio71Generator::WriteSLNHeader(std::ostream& fout)
|
||||
|
|
|
@ -70,7 +70,6 @@ protected:
|
|||
const char* path,
|
||||
const char* typeGuid,
|
||||
const std::set<cmStdString>& depends);
|
||||
virtual void WriteSLNFooter(std::ostream& fout);
|
||||
virtual void WriteSLNHeader(std::ostream& fout);
|
||||
|
||||
std::string ProjectConfigurationSectionName;
|
||||
|
|
|
@ -431,6 +431,9 @@ void cmGlobalVisualStudio7Generator
|
|||
this->WriteTargetConfigurations(fout, root, orderedProjectTargets);
|
||||
fout << "\tEndGlobalSection\n";
|
||||
|
||||
// Write out global sections
|
||||
this->WriteSLNGlobalSections(fout, root);
|
||||
|
||||
// Write the footer for the SLN file
|
||||
this->WriteSLNFooter(fout);
|
||||
}
|
||||
|
@ -624,14 +627,73 @@ void cmGlobalVisualStudio7Generator::WriteExternalProject(std::ostream& fout,
|
|||
|
||||
|
||||
|
||||
void cmGlobalVisualStudio7Generator
|
||||
::WriteSLNGlobalSections(std::ostream& fout,
|
||||
cmLocalGenerator* root)
|
||||
{
|
||||
bool extensibilityGlobalsOverridden = false;
|
||||
bool extensibilityAddInsOverridden = false;
|
||||
const cmPropertyMap& props = root->GetMakefile()->GetProperties();
|
||||
for(cmPropertyMap::const_iterator itProp = props.begin();
|
||||
itProp != props.end(); ++itProp)
|
||||
{
|
||||
if(itProp->first.find("VS_GLOBAL_SECTION_") == 0)
|
||||
{
|
||||
std::string sectionType;
|
||||
std::string name = itProp->first.substr(18);
|
||||
if(name.find("PRE_") == 0)
|
||||
{
|
||||
name = name.substr(4);
|
||||
sectionType = "preSolution";
|
||||
}
|
||||
else if(name.find("POST_") == 0)
|
||||
{
|
||||
name = name.substr(5);
|
||||
sectionType = "postSolution";
|
||||
}
|
||||
else
|
||||
continue;
|
||||
if(!name.empty())
|
||||
{
|
||||
if(name == "ExtensibilityGlobals" && sectionType == "postSolution")
|
||||
extensibilityGlobalsOverridden = true;
|
||||
else if(name == "ExtensibilityAddIns" && sectionType == "postSolution")
|
||||
extensibilityAddInsOverridden = true;
|
||||
fout << "\tGlobalSection(" << name << ") = " << sectionType << "\n";
|
||||
std::vector<std::string> keyValuePairs;
|
||||
cmSystemTools::ExpandListArgument(itProp->second.GetValue(),
|
||||
keyValuePairs);
|
||||
for(std::vector<std::string>::const_iterator itPair =
|
||||
keyValuePairs.begin(); itPair != keyValuePairs.end(); ++itPair)
|
||||
{
|
||||
const std::string::size_type posEqual = itPair->find('=');
|
||||
if(posEqual != std::string::npos)
|
||||
{
|
||||
const std::string key =
|
||||
cmSystemTools::TrimWhitespace(itPair->substr(0, posEqual));
|
||||
const std::string value =
|
||||
cmSystemTools::TrimWhitespace(itPair->substr(posEqual + 1));
|
||||
fout << "\t\t" << key << " = " << value << "\n";
|
||||
}
|
||||
}
|
||||
fout << "\tEndGlobalSection\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!extensibilityGlobalsOverridden)
|
||||
fout << "\tGlobalSection(ExtensibilityGlobals) = postSolution\n"
|
||||
<< "\tEndGlobalSection\n";
|
||||
if(!extensibilityAddInsOverridden)
|
||||
fout << "\tGlobalSection(ExtensibilityAddIns) = postSolution\n"
|
||||
<< "\tEndGlobalSection\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Standard end of dsw file
|
||||
void cmGlobalVisualStudio7Generator::WriteSLNFooter(std::ostream& fout)
|
||||
{
|
||||
fout << "\tGlobalSection(ExtensibilityGlobals) = postSolution\n"
|
||||
<< "\tEndGlobalSection\n"
|
||||
<< "\tGlobalSection(ExtensibilityAddIns) = postSolution\n"
|
||||
<< "\tEndGlobalSection\n"
|
||||
<< "EndGlobal\n";
|
||||
fout << "EndGlobal\n";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -109,6 +109,8 @@ protected:
|
|||
const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
const char* platformMapping = NULL);
|
||||
virtual void WriteSLNGlobalSections(std::ostream& fout,
|
||||
cmLocalGenerator* root);
|
||||
virtual void WriteSLNFooter(std::ostream& fout);
|
||||
virtual void WriteSLNHeader(std::ostream& fout);
|
||||
virtual std::string WriteUtilityDepend(cmTarget* target);
|
||||
|
|
Loading…
Reference in New Issue