ENH: create mainGroup
This commit is contained in:
parent
892a7c4fd9
commit
97cd380970
@ -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();
|
||||
|
@ -70,6 +70,7 @@ private:
|
||||
cmXCodeObject* CreateObject(cmXCodeObject::PBXType ptype);
|
||||
cmXCodeObject* CreateObject(cmXCodeObject::Type type);
|
||||
cmXCodeObject* CreateString(const char* s);
|
||||
cmXCodeObject* CreateObjectReference(cmXCodeObject*);
|
||||
|
||||
// delete all objects in the m_XCodeObjects vector.
|
||||
void ClearXCodeObjects();
|
||||
@ -80,8 +81,10 @@ private:
|
||||
void WriteXCodePBXProj(std::ostream& fout,
|
||||
cmLocalGenerator* root,
|
||||
std::vector<cmLocalGenerator*>& generators);
|
||||
cmXCodeObject* CreateXCodeSourceFile(cmLocalGenerator* gen, cmSourceFile* sf);
|
||||
void CreateXCodeTargets(cmLocalGenerator* gen, std::vector<cmXCodeObject*>&);
|
||||
cmXCodeObject* CreateXCodeSourceFile(cmLocalGenerator* gen, cmSourceFile* sf,
|
||||
cmXCodeObject* mainGroupChildren);
|
||||
void CreateXCodeTargets(cmLocalGenerator* gen, std::vector<cmXCodeObject*>&,
|
||||
cmXCodeObject* mainGroupChildren);
|
||||
|
||||
std::vector<cmXCodeObject*> m_XCodeObjects;
|
||||
cmXCodeObject* m_RootObject;
|
||||
|
Loading…
x
Reference in New Issue
Block a user