XCode: Support target folders on XCode.
This commit is contained in:
parent
59ed84e032
commit
eeeeca1082
|
@ -2481,27 +2481,55 @@ cmXCodeObject *cmGlobalXCodeGenerator
|
||||||
cmXCodeObject* cmGlobalXCodeGenerator
|
cmXCodeObject* cmGlobalXCodeGenerator
|
||||||
::CreateOrGetPBXGroup(cmTarget& cmtarget, cmSourceGroup* sg)
|
::CreateOrGetPBXGroup(cmTarget& cmtarget, cmSourceGroup* sg)
|
||||||
{
|
{
|
||||||
cmStdString s = cmtarget.GetName();
|
cmStdString s;
|
||||||
s += "/";
|
cmStdString target;
|
||||||
|
const char *targetFolder= cmtarget.GetProperty("FOLDER");
|
||||||
|
if(targetFolder) {
|
||||||
|
target = targetFolder;
|
||||||
|
target += "/";
|
||||||
|
}
|
||||||
|
target += cmtarget.GetName();
|
||||||
|
s = target + "/";
|
||||||
s += sg->GetFullName();
|
s += sg->GetFullName();
|
||||||
std::map<cmStdString, cmXCodeObject* >::iterator i =
|
std::map<cmStdString, cmXCodeObject* >::iterator it =
|
||||||
this->GroupNameMap.find(s);
|
this->GroupNameMap.find(s);
|
||||||
if(i != this->GroupNameMap.end())
|
if(it != this->GroupNameMap.end())
|
||||||
{
|
{
|
||||||
return i->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
i = this->TargetGroup.find(cmtarget.GetName());
|
|
||||||
|
it = this->TargetGroup.find(target);
|
||||||
cmXCodeObject* tgroup = 0;
|
cmXCodeObject* tgroup = 0;
|
||||||
if(i != this->TargetGroup.end())
|
if(it != this->TargetGroup.end())
|
||||||
{
|
{
|
||||||
tgroup = i->second;
|
tgroup = it->second;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tgroup = this->CreatePBXGroup(NULL,cmtarget.GetName());
|
std::vector<std::string> tgt_folders = cmSystemTools::tokenize(target, "/");
|
||||||
this->TargetGroup[cmtarget.GetName()] = tgroup;
|
cmStdString curr_tgt_folder;
|
||||||
this->SourcesGroupChildren->AddObject(tgroup);
|
for(std::vector<std::string>::size_type i = 0; i < tgt_folders.size();i++)
|
||||||
|
{
|
||||||
|
curr_tgt_folder += tgt_folders[i];
|
||||||
|
it = this->TargetGroup.find(curr_tgt_folder);
|
||||||
|
if(it == this->TargetGroup.end())
|
||||||
|
{
|
||||||
|
tgroup = this->CreatePBXGroup(tgroup,tgt_folders[i]);
|
||||||
|
this->TargetGroup[curr_tgt_folder] = tgroup;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tgroup = it->second;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(i == 0)
|
||||||
|
{
|
||||||
|
this->SourcesGroupChildren->AddObject(tgroup);
|
||||||
|
}
|
||||||
|
curr_tgt_folder += "/";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
this->TargetGroup[target] = tgroup;
|
||||||
|
|
||||||
// If it's the default source group (empty name) then put the source file
|
// If it's the default source group (empty name) then put the source file
|
||||||
// directly in the tgroup...
|
// directly in the tgroup...
|
||||||
|
|
Loading…
Reference in New Issue