|
|
@@ -100,16 +100,22 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateString(const char* s)
|
|
|
obj->SetString(s);
|
|
|
return obj;
|
|
|
}
|
|
|
+cmXCodeObject* cmGlobalXCodeGenerator::CreateObjectReference(cmXCodeObject* ref)
|
|
|
+{
|
|
|
+ cmXCodeObject* obj = this->CreateObject(cmXCodeObject::OBJECT_REF);
|
|
|
+ obj->SetObject(ref);
|
|
|
+ return obj;
|
|
|
+}
|
|
|
|
|
|
cmXCodeObject*
|
|
|
cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
|
|
|
- cmSourceFile* sf)
|
|
|
+ cmSourceFile* sf,
|
|
|
+ cmXCodeObject* mainGroupChildren)
|
|
|
{
|
|
|
cmXCodeObject* fileRef = this->CreateObject(cmXCodeObject::PBXFileReference);
|
|
|
- cmXCodeObject* fileRefPtr = this->CreateObject(cmXCodeObject::OBJECT_REF);
|
|
|
- fileRefPtr->SetObject(fileRef);
|
|
|
+ mainGroupChildren->AddObject(fileRef);
|
|
|
cmXCodeObject* buildFile = this->CreateObject(cmXCodeObject::PBXBuildFile);
|
|
|
- buildFile->AddAttribute("fileRef", fileRefPtr);
|
|
|
+ buildFile->AddAttribute("fileRef", this->CreateObjectReference(fileRef));
|
|
|
cmXCodeObject* settings = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
|
buildFile->AddAttribute("settings", settings);
|
|
|
fileRef->AddAttribute("fileEncoding", this->CreateString("4"));
|
|
|
@@ -123,7 +129,8 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
void cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
|
|
- std::vector<cmXCodeObject*>& targets)
|
|
|
+ std::vector<cmXCodeObject*>& targets,
|
|
|
+ cmXCodeObject* mainGroupChildren)
|
|
|
{
|
|
|
cmTargets &tgts = gen->GetMakefile()->GetTargets();
|
|
|
for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
|
|
|
@@ -139,7 +146,7 @@ void cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
|
|
for(std::vector<cmSourceFile*>::iterator i = classes.begin();
|
|
|
i != classes.end(); ++i)
|
|
|
{
|
|
|
- buildFiles->AddObject(this->CreateXCodeSourceFile(gen, *i));
|
|
|
+ buildFiles->AddObject(this->CreateXCodeSourceFile(gen, *i, mainGroupChildren));
|
|
|
}
|
|
|
// create header build phase
|
|
|
cmXCodeObject* headerBuildPhase = this->CreateObject(cmXCodeObject::PBXHeadersBuildPhase);
|
|
|
@@ -193,9 +200,7 @@ void cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
|
|
fileRef->AddAttribute("path", this->CreateString(l->first.c_str()));
|
|
|
fileRef->AddAttribute("refType", this->CreateString("3"));
|
|
|
fileRef->AddAttribute("sourceTree", this->CreateString("BUILT_PRODUCTS_DIR"));
|
|
|
- cmXCodeObject* fileRefPtr = this->CreateObject(cmXCodeObject::OBJECT_REF);
|
|
|
- fileRefPtr->SetObject(fileRef);
|
|
|
- target->AddAttribute("productReference", fileRefPtr);
|
|
|
+ target->AddAttribute("productReference", this->CreateObjectReference(fileRef));
|
|
|
target->AddAttribute("productType", this->CreateString("\"com.apple.product-type.tool\""));
|
|
|
}
|
|
|
else if (l->second.GetType() == cmTarget::UTILITY)
|
|
|
@@ -229,9 +234,15 @@ void cmGlobalXCodeGenerator::CreateXCodeObjects(cmLocalGenerator* ,
|
|
|
listObjs->AddObject(developBuildStyle);
|
|
|
listObjs->AddObject(deployBuildStyle);
|
|
|
|
|
|
-
|
|
|
+ cmXCodeObject* mainGroup = this->CreateObject(cmXCodeObject::PBXGroup);
|
|
|
+ cmXCodeObject* mainGroupChildren = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
+ mainGroup->AddAttribute("children", mainGroupChildren);
|
|
|
+ mainGroup->AddAttribute("refType", this->CreateString("4"));
|
|
|
+ mainGroup->AddAttribute("sourceTree", this->CreateString("\"<group>\""));
|
|
|
+
|
|
|
m_RootObject = this->CreateObject(cmXCodeObject::PBXProject);
|
|
|
group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
|
+ m_RootObject->AddAttribute("mainGroup", this->CreateObjectReference(mainGroup));
|
|
|
m_RootObject->AddAttribute("buildSettings", group);
|
|
|
m_RootObject->AddAttribute("buildSyles", listObjs);
|
|
|
m_RootObject->AddAttribute("hasScannedForEncodings", this->CreateString("0"));
|
|
|
@@ -239,7 +250,7 @@ void cmGlobalXCodeGenerator::CreateXCodeObjects(cmLocalGenerator* ,
|
|
|
for(std::vector<cmLocalGenerator*>::iterator i = generators.begin();
|
|
|
i != generators.end(); ++i)
|
|
|
{
|
|
|
- this->CreateXCodeTargets(*i, targets);
|
|
|
+ this->CreateXCodeTargets(*i, targets, mainGroupChildren);
|
|
|
}
|
|
|
cmXCodeObject* allTargets = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
for(std::vector<cmXCodeObject*>::iterator i = targets.begin();
|