|
|
@@ -876,10 +876,20 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
|
|
|
ext = realExt.substr(1);
|
|
|
}
|
|
|
|
|
|
- std::string sourcecode = GetSourcecodeValueFromFileExtension(ext, lang);
|
|
|
-
|
|
|
- fileRef->AddAttribute("explicitFileType",
|
|
|
- this->CreateString(sourcecode.c_str()));
|
|
|
+ // If fullpath references a directory, then we need to specify
|
|
|
+ // lastKnownFileType as folder in order for Xcode to be able to open the
|
|
|
+ // contents of the folder (Xcode 4.6 does not like explicitFileType=folder).
|
|
|
+ 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.
|
|
|
std::string path = this->RelativeToSource(fullpath.c_str());
|
|
|
@@ -1009,7 +1019,8 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
|
|
cmTarget::SourceFileFlags tsFlags =
|
|
|
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);
|
|
|
}
|