diff options
author | Brad King <brad.king@kitware.com> | 2014-09-03 15:54:05 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-09-03 16:45:37 (GMT) |
commit | e7114226e6af60b9d214dba26d44648f530e4d96 (patch) | |
tree | 2c384a6c79687f6cb1eae4ad603042c34b57c22a | |
parent | 76acc128a272b1fae303215a985410faec87c3e0 (diff) | |
download | CMake-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.cxx | 10 |
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)) |