Merge topic 'xcode-folder-types'

e5ec8ad Xcode: Generate 'folder' source type for directories (#14498)
This commit is contained in:
Brad King 2013-10-22 09:08:01 -04:00 committed by CMake Topic Stage
commit c951849799
1 changed files with 16 additions and 5 deletions

View File

@ -876,10 +876,20 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
ext = realExt.substr(1); ext = realExt.substr(1);
} }
std::string sourcecode = GetSourcecodeValueFromFileExtension(ext, lang); // If fullpath references a directory, then we need to specify
// lastKnownFileType as folder in order for Xcode to be able to open the
fileRef->AddAttribute("explicitFileType", // contents of the folder (Xcode 4.6 does not like explicitFileType=folder).
this->CreateString(sourcecode.c_str())); if(cmSystemTools::FileIsDirectory(fullpath.c_str()))
{
fileRef->AddAttribute("lastKnownFileType",
this->CreateString("folder"));
}
else
{
std::string sourcecode = GetSourcecodeValueFromFileExtension(ext, lang);
fileRef->AddAttribute("explicitFileType",
this->CreateString(sourcecode.c_str()));
}
// Store the file path relative to the top of the source tree. // Store the file path relative to the top of the source tree.
std::string path = this->RelativeToSource(fullpath.c_str()); std::string path = this->RelativeToSource(fullpath.c_str());
@ -1009,7 +1019,8 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
cmTarget::SourceFileFlags tsFlags = cmTarget::SourceFileFlags tsFlags =
cmtarget.GetTargetSourceFileFlags(*i); cmtarget.GetTargetSourceFileFlags(*i);
if(strcmp(filetype->GetString(), "compiled.mach-o.objfile") == 0) if(filetype &&
strcmp(filetype->GetString(), "compiled.mach-o.objfile") == 0)
{ {
externalObjFiles.push_back(xsf); externalObjFiles.push_back(xsf);
} }