summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-09-03 15:54:05 (GMT)
committerBrad King <brad.king@kitware.com>2014-09-03 16:45:37 (GMT)
commite7114226e6af60b9d214dba26d44648f530e4d96 (patch)
tree2c384a6c79687f6cb1eae4ad603042c34b57c22a
parent76acc128a272b1fae303215a985410faec87c3e0 (diff)
downloadCMake-e7114226e6af60b9d214dba26d44648f530e4d96.zip
CMake-e7114226e6af60b9d214dba26d44648f530e4d96.tar.gz
CMake-e7114226e6af60b9d214dba26d44648f530e4d96.tar.bz2
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.
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx10
1 files changed, 4 insertions, 6 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 3503e19..f7c2e87 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/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))