BUG: Do not generate "global" Xcode config
Xcode 2.0 and below supported only one configuration, but 2.1 and above support multiple configurations. In projects for the latter version we have been generating a "global" set of buildSettings for each target in addition to the per-configuration settings. These global settings are not used by Xcode 2.1 and above, so we should not generate them.
This commit is contained in:
parent
6bd9d5ab8a
commit
2247153110
@ -1839,19 +1839,19 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
|
|||||||
this->CreateCustomCommands(buildPhases, 0, 0, 0, emptyContentVector, 0,
|
this->CreateCustomCommands(buildPhases, 0, 0, 0, emptyContentVector, 0,
|
||||||
cmtarget);
|
cmtarget);
|
||||||
target->AddAttribute("buildPhases", buildPhases);
|
target->AddAttribute("buildPhases", buildPhases);
|
||||||
cmXCodeObject* buildSettings =
|
|
||||||
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
||||||
const char* globalConfig = 0;
|
|
||||||
if(this->XcodeVersion > 20)
|
if(this->XcodeVersion > 20)
|
||||||
{
|
{
|
||||||
this->AddConfigurations(target, cmtarget);
|
this->AddConfigurations(target, cmtarget);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
globalConfig = this->CurrentMakefile->GetDefinition("CMAKE_BUILD_TYPE");
|
const char* theConfig =
|
||||||
|
this->CurrentMakefile->GetDefinition("CMAKE_BUILD_TYPE");
|
||||||
|
cmXCodeObject* buildSettings =
|
||||||
|
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
||||||
|
this->CreateBuildSettings(cmtarget, buildSettings, theConfig);
|
||||||
|
target->AddAttribute("buildSettings", buildSettings);
|
||||||
}
|
}
|
||||||
this->CreateBuildSettings(cmtarget, buildSettings, globalConfig);
|
|
||||||
target->AddAttribute("buildSettings", buildSettings);
|
|
||||||
cmXCodeObject* dependencies =
|
cmXCodeObject* dependencies =
|
||||||
this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
||||||
target->AddAttribute("dependencies", dependencies);
|
target->AddAttribute("dependencies", dependencies);
|
||||||
@ -1877,8 +1877,8 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
|
std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
|
||||||
cmTarget& cmtarget)
|
cmTarget& cmtarget)
|
||||||
{
|
{
|
||||||
std::string configTypes =
|
std::string configTypes =
|
||||||
this->CurrentMakefile->GetRequiredDefinition("CMAKE_CONFIGURATION_TYPES");
|
this->CurrentMakefile->GetRequiredDefinition("CMAKE_CONFIGURATION_TYPES");
|
||||||
@ -1918,7 +1918,9 @@ void cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
|
|||||||
this->CreateString(configVector[0].c_str()));
|
this->CreateString(configVector[0].c_str()));
|
||||||
configlist->AddAttribute("defaultConfigurationIsVisible",
|
configlist->AddAttribute("defaultConfigurationIsVisible",
|
||||||
this->CreateString("0"));
|
this->CreateString("0"));
|
||||||
|
return configVector[0];
|
||||||
}
|
}
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
@ -1974,19 +1976,19 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
|
|||||||
target->AddAttribute("buildPhases", buildPhases);
|
target->AddAttribute("buildPhases", buildPhases);
|
||||||
cmXCodeObject* buildRules = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
cmXCodeObject* buildRules = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
||||||
target->AddAttribute("buildRules", buildRules);
|
target->AddAttribute("buildRules", buildRules);
|
||||||
cmXCodeObject* buildSettings =
|
std::string defConfig;
|
||||||
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
||||||
const char* globalConfig = 0;
|
|
||||||
if(this->XcodeVersion > 20)
|
if(this->XcodeVersion > 20)
|
||||||
{
|
{
|
||||||
this->AddConfigurations(target, cmtarget);
|
defConfig = this->AddConfigurations(target, cmtarget);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
globalConfig = this->CurrentMakefile->GetDefinition("CMAKE_BUILD_TYPE");
|
cmXCodeObject* buildSettings =
|
||||||
|
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
||||||
|
defConfig = this->CurrentMakefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
|
||||||
|
this->CreateBuildSettings(cmtarget, buildSettings, defConfig.c_str());
|
||||||
|
target->AddAttribute("buildSettings", buildSettings);
|
||||||
}
|
}
|
||||||
this->CreateBuildSettings(cmtarget, buildSettings, globalConfig);
|
|
||||||
target->AddAttribute("buildSettings", buildSettings);
|
|
||||||
cmXCodeObject* dependencies =
|
cmXCodeObject* dependencies =
|
||||||
this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
||||||
target->AddAttribute("dependencies", dependencies);
|
target->AddAttribute("dependencies", dependencies);
|
||||||
@ -1999,7 +2001,7 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
|
|||||||
{
|
{
|
||||||
fileRef->AddAttribute("explicitFileType", this->CreateString(fileType));
|
fileRef->AddAttribute("explicitFileType", this->CreateString(fileType));
|
||||||
}
|
}
|
||||||
std::string fullName = cmtarget.GetFullName(globalConfig);
|
std::string fullName = cmtarget.GetFullName(defConfig.c_str());
|
||||||
fileRef->AddAttribute("path", this->CreateString(fullName.c_str()));
|
fileRef->AddAttribute("path", this->CreateString(fullName.c_str()));
|
||||||
fileRef->AddAttribute("refType", this->CreateString("0"));
|
fileRef->AddAttribute("refType", this->CreateString("0"));
|
||||||
fileRef->AddAttribute("sourceTree",
|
fileRef->AddAttribute("sourceTree",
|
||||||
|
@ -130,8 +130,7 @@ private:
|
|||||||
cmXCodeObject* buildPhases);
|
cmXCodeObject* buildPhases);
|
||||||
const char* GetTargetFileType(cmTarget& cmtarget);
|
const char* GetTargetFileType(cmTarget& cmtarget);
|
||||||
const char* GetTargetProductType(cmTarget& cmtarget);
|
const char* GetTargetProductType(cmTarget& cmtarget);
|
||||||
void AddConfigurations(cmXCodeObject* target,
|
std::string AddConfigurations(cmXCodeObject* target, cmTarget& cmtarget);
|
||||||
cmTarget& cmtarget);
|
|
||||||
void AppendOrAddBuildSetting(cmXCodeObject* settings, const char* attr,
|
void AppendOrAddBuildSetting(cmXCodeObject* settings, const char* attr,
|
||||||
const char* value);
|
const char* value);
|
||||||
void AppendBuildSettingAttribute(cmXCodeObject* target, const char* attr,
|
void AppendBuildSettingAttribute(cmXCodeObject* target, const char* attr,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user