Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating sub-groups in XCode 4 Templates

Tags:

xcode

xcode4

While there is quite a lot of documentation and example for creating templates in XCode 3 converting them to XCode4 Templates is quite a nightmare...

First here is what i've found:

  • BorealKiss provides a nice tutorial for staters
  • Cocos2d has some very nice examples to make your templates more "evolved"

But all of them fail to answer this sample question:

How can someone create Folders Insider other Folders ?

For example if you want to have files inside a group you should write:

<key>Definitions</key>
<dict>
    <key>File1.h</key>
    <dict>
        <key>Group</key>
        <string>Group1</string>
        <key>Path</key>
        <string>File1.h</string>
        <key>TargetIndices</key>
        <array/>
    </dict>
    <key>File1.m</key>
    <dict>
        <key>Group</key>
        <string>Group1</string>
        <key>Path</key>
        <string>File1.m</string>
    </dict>
</dict>

<key>Nodes</key>
<array>
    <string>File1.h</string>
    <string>File1.m</string>
</array>

but how would you go for having Group1 inside Group2 for example.

I've tried many many things, playing with ancestors and all but nothing worked. Any piece of advice or any documentation (I couldn't find any on those XCode templates) would be greatly appreciated.

like image 402
apouche Avatar asked Mar 26 '11 22:03

apouche


2 Answers

I've tried many times modify the TemplateInfo.plist and I've also tried to make a sub group and put files in them. Finally I found the solution:

Definition section:

<key>Definitions</key>
<dict>
    <key>main.h</key>
    <dict>
        <key>Path</key>
        <string>main.h</string>
        <key>Group</key>
        <array>
            <string>parent</string>
            <string>child</string>
        </array>
    </dict>
</dict>

in the node section:

<key>Nodes</key>
<array>
    <string>main.h</string>
</array>

The code above will create groups parent and child. and the main.h is in the child

Project
--parent
---child
----main.h
like image 151
codecarver Avatar answered Sep 28 '22 06:09

codecarver


I've been struggling with this one myself too. As a workaround I've created and added a folder in my TemplateInfo.plist location (in your case that should be folder named Group1). The folder layout (subfolders and files) are the same as I want them to be in my project source tree ( e.g folder 'Group1' has subfolder 'Group2', folder 'Group2' has files File1.h and File1.m etc). Then I just add the root folder (Group1) in my TemplateInfo.plist file by defining it in the Definition section and by adding it to the Nodes section like this:

<key>Definitions</key>
<dict>
<key>Group1/</key>
<dict>
<key>Path</key>
<string>Group1/</string>
<key>TargetIndices</key>
<array/>
</dict>

<key>Nodes</key>
<array>
<string>Group1</string>
</array>
like image 20
denicija Avatar answered Sep 28 '22 08:09

denicija