ENH: Added partial implementation of recognizing per-configration properties.

This commit is contained in:
Brad King 2008-01-15 10:49:59 -05:00
parent da335fbd00
commit 34c04d6d02
1 changed files with 23 additions and 1 deletions

View File

@ -3324,6 +3324,15 @@ void cmake::ReportUndefinedPropertyAccesses(const char *filename)
std::vector<std::string> enLangs;
this->GlobalGenerator->GetEnabledLanguages(enLangs);
// Common configuration names.
// TODO: Compute current configuration(s).
std::vector<std::string> enConfigs;
enConfigs.push_back("");
enConfigs.push_back("DEBUG");
enConfigs.push_back("RELEASE");
enConfigs.push_back("MINSIZEREL");
enConfigs.push_back("RELWITHDEBINFO");
// take all the defined properties and add definitions for all the enabled
// languages
std::set<std::pair<cmStdString,cmProperty::ScopeType> > aliasedProperties;
@ -3334,7 +3343,20 @@ void cmake::ReportUndefinedPropertyAccesses(const char *filename)
cmPropertyDefinitionMap::iterator j;
for (j = i->second.begin(); j != i->second.end(); ++j)
{
if (j->first.find("<LANG>"))
// TODO: What if both <LANG> and <CONFIG> appear?
if (j->first.find("<CONFIG>") != std::string::npos)
{
std::vector<std::string>::const_iterator k;
for (k = enConfigs.begin(); k != enConfigs.end(); ++k)
{
std::string tmp = j->first;
cmSystemTools::ReplaceString(tmp, "<CONFIG>", k->c_str());
// add alias
aliasedProperties.insert
(std::pair<cmStdString,cmProperty::ScopeType>(tmp,i->first));
}
}
if (j->first.find("<LANG>") != std::string::npos)
{
std::vector<std::string>::const_iterator k;
for (k = enLangs.begin(); k != enLangs.end(); ++k)