浏览代码

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.
Brad King 11 年之前
父节点
当前提交
e7114226e6
共有 1 个文件被更改,包括 4 次插入6 次删除
  1. 4 6
      Source/cmGlobalXCodeGenerator.cxx

+ 4 - 6
Source/cmGlobalXCodeGenerator.cxx

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