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);
|
obj->SetString(s);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
cmXCodeObject* cmGlobalXCodeGenerator::CreateObjectReference(cmXCodeObject* ref)
|
||||||
|
{
|
||||||
|
cmXCodeObject* obj = this->CreateObject(cmXCodeObject::OBJECT_REF);
|
||||||
|
obj->SetObject(ref);
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
cmXCodeObject*
|
cmXCodeObject*
|
||||||
cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
|
cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
|
||||||
cmSourceFile* sf)
|
cmSourceFile* sf,
|
||||||
|
cmXCodeObject* mainGroupChildren)
|
||||||
{
|
{
|
||||||
cmXCodeObject* fileRef = this->CreateObject(cmXCodeObject::PBXFileReference);
|
cmXCodeObject* fileRef = this->CreateObject(cmXCodeObject::PBXFileReference);
|
||||||
cmXCodeObject* fileRefPtr = this->CreateObject(cmXCodeObject::OBJECT_REF);
|
mainGroupChildren->AddObject(fileRef);
|
||||||
fileRefPtr->SetObject(fileRef);
|
|
||||||
cmXCodeObject* buildFile = this->CreateObject(cmXCodeObject::PBXBuildFile);
|
cmXCodeObject* buildFile = this->CreateObject(cmXCodeObject::PBXBuildFile);
|
||||||
buildFile->AddAttribute("fileRef", fileRefPtr);
|
buildFile->AddAttribute("fileRef", this->CreateObjectReference(fileRef));
|
||||||
cmXCodeObject* settings = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
cmXCodeObject* settings = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
||||||
buildFile->AddAttribute("settings", settings);
|
buildFile->AddAttribute("settings", settings);
|
||||||
fileRef->AddAttribute("fileEncoding", this->CreateString("4"));
|
fileRef->AddAttribute("fileEncoding", this->CreateString("4"));
|
||||||
@ -123,7 +129,8 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg,
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
void cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen,
|
||||||
std::vector<cmXCodeObject*>& targets)
|
std::vector<cmXCodeObject*>& targets,
|
||||||
|
cmXCodeObject* mainGroupChildren)
|
||||||
{
|
{
|
||||||
cmTargets &tgts = gen->GetMakefile()->GetTargets();
|
cmTargets &tgts = gen->GetMakefile()->GetTargets();
|
||||||
for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
|
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();
|
for(std::vector<cmSourceFile*>::iterator i = classes.begin();
|
||||||
i != classes.end(); ++i)
|
i != classes.end(); ++i)
|
||||||
{
|
{
|
||||||
buildFiles->AddObject(this->CreateXCodeSourceFile(gen, *i));
|
buildFiles->AddObject(this->CreateXCodeSourceFile(gen, *i, mainGroupChildren));
|
||||||
}
|
}
|
||||||
// create header build phase
|
// create header build phase
|
||||||
cmXCodeObject* headerBuildPhase = this->CreateObject(cmXCodeObject::PBXHeadersBuildPhase);
|
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("path", this->CreateString(l->first.c_str()));
|
||||||
fileRef->AddAttribute("refType", this->CreateString("3"));
|
fileRef->AddAttribute("refType", this->CreateString("3"));
|
||||||
fileRef->AddAttribute("sourceTree", this->CreateString("BUILT_PRODUCTS_DIR"));
|
fileRef->AddAttribute("sourceTree", this->CreateString("BUILT_PRODUCTS_DIR"));
|
||||||
cmXCodeObject* fileRefPtr = this->CreateObject(cmXCodeObject::OBJECT_REF);
|
target->AddAttribute("productReference", this->CreateObjectReference(fileRef));
|
||||||
fileRefPtr->SetObject(fileRef);
|
|
||||||
target->AddAttribute("productReference", fileRefPtr);
|
|
||||||
target->AddAttribute("productType", this->CreateString("\"com.apple.product-type.tool\""));
|
target->AddAttribute("productType", this->CreateString("\"com.apple.product-type.tool\""));
|
||||||
}
|
}
|
||||||
else if (l->second.GetType() == cmTarget::UTILITY)
|
else if (l->second.GetType() == cmTarget::UTILITY)
|
||||||
@ -229,9 +234,15 @@ void cmGlobalXCodeGenerator::CreateXCodeObjects(cmLocalGenerator* ,
|
|||||||
listObjs->AddObject(developBuildStyle);
|
listObjs->AddObject(developBuildStyle);
|
||||||
listObjs->AddObject(deployBuildStyle);
|
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);
|
m_RootObject = this->CreateObject(cmXCodeObject::PBXProject);
|
||||||
group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
||||||
|
m_RootObject->AddAttribute("mainGroup", this->CreateObjectReference(mainGroup));
|
||||||
m_RootObject->AddAttribute("buildSettings", group);
|
m_RootObject->AddAttribute("buildSettings", group);
|
||||||
m_RootObject->AddAttribute("buildSyles", listObjs);
|
m_RootObject->AddAttribute("buildSyles", listObjs);
|
||||||
m_RootObject->AddAttribute("hasScannedForEncodings", this->CreateString("0"));
|
m_RootObject->AddAttribute("hasScannedForEncodings", this->CreateString("0"));
|
||||||
@ -239,7 +250,7 @@ void cmGlobalXCodeGenerator::CreateXCodeObjects(cmLocalGenerator* ,
|
|||||||
for(std::vector<cmLocalGenerator*>::iterator i = generators.begin();
|
for(std::vector<cmLocalGenerator*>::iterator i = generators.begin();
|
||||||
i != generators.end(); ++i)
|
i != generators.end(); ++i)
|
||||||
{
|
{
|
||||||
this->CreateXCodeTargets(*i, targets);
|
this->CreateXCodeTargets(*i, targets, mainGroupChildren);
|
||||||
}
|
}
|
||||||
cmXCodeObject* allTargets = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
cmXCodeObject* allTargets = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
||||||
for(std::vector<cmXCodeObject*>::iterator i = targets.begin();
|
for(std::vector<cmXCodeObject*>::iterator i = targets.begin();
|
||||||
|
@ -70,6 +70,7 @@ private:
|
|||||||
cmXCodeObject* CreateObject(cmXCodeObject::PBXType ptype);
|
cmXCodeObject* CreateObject(cmXCodeObject::PBXType ptype);
|
||||||
cmXCodeObject* CreateObject(cmXCodeObject::Type type);
|
cmXCodeObject* CreateObject(cmXCodeObject::Type type);
|
||||||
cmXCodeObject* CreateString(const char* s);
|
cmXCodeObject* CreateString(const char* s);
|
||||||
|
cmXCodeObject* CreateObjectReference(cmXCodeObject*);
|
||||||
|
|
||||||
// delete all objects in the m_XCodeObjects vector.
|
// delete all objects in the m_XCodeObjects vector.
|
||||||
void ClearXCodeObjects();
|
void ClearXCodeObjects();
|
||||||
@ -80,8 +81,10 @@ private:
|
|||||||
void WriteXCodePBXProj(std::ostream& fout,
|
void WriteXCodePBXProj(std::ostream& fout,
|
||||||
cmLocalGenerator* root,
|
cmLocalGenerator* root,
|
||||||
std::vector<cmLocalGenerator*>& generators);
|
std::vector<cmLocalGenerator*>& generators);
|
||||||
cmXCodeObject* CreateXCodeSourceFile(cmLocalGenerator* gen, cmSourceFile* sf);
|
cmXCodeObject* CreateXCodeSourceFile(cmLocalGenerator* gen, cmSourceFile* sf,
|
||||||
void CreateXCodeTargets(cmLocalGenerator* gen, std::vector<cmXCodeObject*>&);
|
cmXCodeObject* mainGroupChildren);
|
||||||
|
void CreateXCodeTargets(cmLocalGenerator* gen, std::vector<cmXCodeObject*>&,
|
||||||
|
cmXCodeObject* mainGroupChildren);
|
||||||
|
|
||||||
std::vector<cmXCodeObject*> m_XCodeObjects;
|
std::vector<cmXCodeObject*> m_XCodeObjects;
|
||||||
cmXCodeObject* m_RootObject;
|
cmXCodeObject* m_RootObject;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user