BUG: fix xcode 15 (really bill Hoffman)
This commit is contained in:
parent
b72d77d929
commit
93ee345b41
@ -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,
|
void cmGlobalXCodeGenerator::AppendBuildSettingAttribute(cmXCodeObject* target,
|
||||||
const char* attribute,
|
const char* attribute,
|
||||||
const char* value)
|
const char* value)
|
||||||
{
|
{
|
||||||
cmXCodeObject* configurationList = target->GetObject("buildConfigurationList")->GetObject();
|
if(m_XcodeVersion < 21)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
|
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");
|
cmXCodeObject* settings = (*i)->GetObject("buildSettings");
|
||||||
if(settings)
|
this->AppendOrAddBuildSetting(settings, attribute, value);
|
||||||
{
|
}
|
||||||
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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,6 +100,8 @@ private:
|
|||||||
cmXCodeObject* buildPhases);
|
cmXCodeObject* buildPhases);
|
||||||
void AddConfigurations(cmXCodeObject* target,
|
void AddConfigurations(cmXCodeObject* target,
|
||||||
cmTarget& cmtarget);
|
cmTarget& cmtarget);
|
||||||
|
void AppendOrAddBuildSetting(cmXCodeObject* settings, const char* attr,
|
||||||
|
const char* value);
|
||||||
void AppendBuildSettingAttribute(cmXCodeObject* target, const char* attr,
|
void AppendBuildSettingAttribute(cmXCodeObject* target, const char* attr,
|
||||||
const char* value);
|
const char* value);
|
||||||
cmXCodeObject* CreateUtilityTarget(cmTarget& target);
|
cmXCodeObject* CreateUtilityTarget(cmTarget& target);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user