Xcode: Generate per-target file references (#15111)

Xcode requires a separate PBXFileReference for each target source group
that references a source file.  Xcode 6 now diagnoses re-use of the same
PBXFileReference from multiple source groups.  Add the referencing
target name to our internal map key so we use a per-target reference.
This commit is contained in:
Brad King 2014-09-03 11:54:05 -04:00
parent 76acc128a2
commit e7114226e6
1 changed files with 4 additions and 6 deletions

View File

@ -837,16 +837,14 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
cmTarget& cmtarget, cmTarget& cmtarget,
const std::string &lang) const std::string &lang)
{ {
std::string fname = fullpath; cmStdString key = GetGroupMapKeyFromPath(cmtarget, fullpath);
cmXCodeObject* fileRef = this->FileRefs[fname]; cmXCodeObject* fileRef = this->FileRefs[key];
if(!fileRef) if(!fileRef)
{ {
fileRef = this->CreateObject(cmXCodeObject::PBXFileReference); fileRef = this->CreateObject(cmXCodeObject::PBXFileReference);
std::string comment = fname; fileRef->SetComment(fullpath.c_str());
fileRef->SetComment(fname.c_str()); this->FileRefs[key] = fileRef;
this->FileRefs[fname] = fileRef;
} }
cmStdString key = GetGroupMapKeyFromPath(cmtarget, fullpath);
cmXCodeObject* group = this->GroupMap[key]; cmXCodeObject* group = this->GroupMap[key];
cmXCodeObject* children = group->GetObject("children"); cmXCodeObject* children = group->GetObject("children");
if (!children->HasObject(fileRef)) if (!children->HasObject(fileRef))