BUG: fix xcode 15 (really bill Hoffman)

This commit is contained in:
Andy Cedilnik 2005-09-08 14:35:37 -04:00
parent b72d77d929
commit 93ee345b41
2 changed files with 41 additions and 22 deletions

View File

@ -1413,35 +1413,52 @@ void cmGlobalXCodeGenerator::AddDependTarget(cmXCodeObject* target,
}
}
//----------------------------------------------------------------------------
void cmGlobalXCodeGenerator::AppendOrAddBuildSetting(cmXCodeObject* settings,
const char* attribute,
const char* value)
{
if(settings)
{
cmXCodeObject* attr = settings->GetObject(attribute);
if(!attr)
{
settings->AddAttribute(attribute, this->CreateString(value));
}
else
{
std::string oldValue = attr->GetString();
cmSystemTools::ReplaceString(oldValue, "\"", "");
oldValue += " ";
oldValue += value;
attr->SetString(oldValue.c_str());
}
}
}
//----------------------------------------------------------------------------
void cmGlobalXCodeGenerator::AppendBuildSettingAttribute(cmXCodeObject* target,
const char* attribute,
const char* value)
{
cmXCodeObject* configurationList = target->GetObject("buildConfigurationList")->GetObject();
cmXCodeObject* buildConfigs = configurationList->GetObject("buildConfigurations");
std::vector<cmXCodeObject*> list = buildConfigs->GetObjectList();
// each configuration and the target itself has a buildSettings in it
list.push_back(target);
for(std::vector<cmXCodeObject*>::iterator i = list.begin(); i != list.end(); ++i)
if(m_XcodeVersion < 21)
{
this->AppendOrAddBuildSetting(target->GetObject("buildSettings"),
attribute, value);
}
else
{
cmXCodeObject* configurationList = target->GetObject("buildConfigurationList")->GetObject();
cmXCodeObject* buildConfigs = configurationList->GetObject("buildConfigurations");
std::vector<cmXCodeObject*> list = buildConfigs->GetObjectList();
// each configuration and the target itself has a buildSettings in it
list.push_back(target);
for(std::vector<cmXCodeObject*>::iterator i = list.begin(); i != list.end(); ++i)
{
cmXCodeObject* settings = (*i)->GetObject("buildSettings");
if(settings)
{
cmXCodeObject* attr = settings->GetObject(attribute);
if(!attr)
{
settings->AddAttribute(attribute, this->CreateString(value));
}
else
{
std::string oldValue = attr->GetString();
cmSystemTools::ReplaceString(oldValue, "\"", "");
oldValue += " ";
oldValue += value;
attr->SetString(oldValue.c_str());
}
}
this->AppendOrAddBuildSetting(settings, attribute, value);
}
}
}

View File

@ -100,6 +100,8 @@ private:
cmXCodeObject* buildPhases);
void AddConfigurations(cmXCodeObject* target,
cmTarget& cmtarget);
void AppendOrAddBuildSetting(cmXCodeObject* settings, const char* attr,
const char* value);
void AppendBuildSettingAttribute(cmXCodeObject* target, const char* attr,
const char* value);
cmXCodeObject* CreateUtilityTarget(cmTarget& target);