summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx61
-rw-r--r--Source/cmGlobalXCodeGenerator.h2
2 files changed, 41 insertions, 22 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 3efc1c5..51d396a 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -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);
+ }
}
}
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index faceff1..20e4088 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -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);