Créer ses propres modèles de projets sous Xcode 3.0

psychoh13psychoh13 Mothership DeveloperMembre
Bonjour tout le monde,

Voici, pour les curieux et ceux qui pourraient trouver ça utile, la manière de concevoir un modèle de projet pour Xcode qui apparaà®tra dans l'assistant de projets. Notre projet d'exemple permettra de concevoir une application basée sur Core Animation, c'est-à -dire avec un prefix-header qui compile les en-têtes de nos frameworks, et les frameworks déjà  ajoutés au projet.

Alors pour créer un nouveau modèle, on va faire simple, on va prendre un ancien modèle et le modifier. Aller dans Developer/Library/Xcode/Project Templates/Application/
Vous dupliquez par exemple le dossier Cocoa Application.
Renommez-le en Core Animation Application.
Maintenant ouvrez le dossier, puis changez directement le nom du projet et le nom du préfixe, donnez-leur les noms suivants :
  • CoreAnimApp.xcodeproj
  • CoreAnimApp_Prefix.pch


Vous pouvez, sur le même modèle, modifier les fichiers contenus dans build ainsi que les sous-dossiers.

Maintenant, pour ajouter les frameworks, il suffit d'ouvrir directement le projet, vous faites comme d'habitude pour ajouter un framework, clic-droit sur le dossier "Linked Framework" : Add --> Existing Frameworks... vous ajoutez les frameworks que vous souhaitez, dans notre cas Quartz et QuartzCore et c'est bon pour ici.

Si vous souhaitez ajouter des fichiers "par défaut" comme par exemple une classe en plus, il vous suffit de les ajouter là  où vous voulez dans votre projet, vous pouvez par ailleurs récupérer les commentaires de début de fichier dans main.m et les mettre au début de vos fichiers.
Vous remarquez dans main.m que les commentaires contiennent des "macros", du texte en majuscule entouré par des doubles chevrons "" "", lorsque Xcode crée le projet à  partir du modèle, ces macros sont remplacés par la valeur qu'il désigne (nom de l'utilisateur, nom du projet, etc.), vous pouvez d'ailleurs voir que le nom du prefix contient une macro.

Vous ouvrez ensuite séparément le fichier de préfixe qu'on a renommé plus tôt, c'est-à -dire CoreAnimApp_prefix.pch, vous écriez ce dont vous avez besoin, c'est-à -dire ici :
#ifdef __OBJC__<br />&nbsp; #import &lt;Cocoa/Cocoa.h&gt;<br />&nbsp; #import &lt;QuartzCore/CoreAnimation.h&gt;<br />&nbsp; #import &lt;Quartz/Quartz.h&gt;<br />&nbsp; #import &lt;QTKit/QTKit.h&gt;<br />&nbsp; #import &lt;ApplicationServices/ApplicationServices.h&gt;<br />#endif


Dernière étape pour avoir un modèle de projet tout propre, il faut "afficher le contenu du paquet" de votre projet. Il contient deux fichiers important "project.pbxproj" et "TemplateInfo.plist", si vous avez d'autres fichiers portant votre nom vous pouvez les supprimer.
On va s'intéresser à  "TemplateInfo.plist", bien que ce soit un fichier .plist, Property List Editor est incapable de le lire parce qu'il n'est pas au format XML. On  va l'ouvrir avec un simple éditeur de texte.
Ici, on trouve trois sections :
  • FilesToRename
  • FilesToMacroExpand
  • Description


Je pense que les noms sont assez explicites. :D
Dans la première partie, vous mettez tous les noms de fichiers qui se trouvent dans votre dossier de modèle et qui doivent être renommé. Ici, nous n'avons que notre préfixe, il faut donc mettre :
&quot;CoreAnimApp_Prefix.pch&quot; = &quot;"PROJECTNAME"_Prefix.pch&quot;;

Vous pouvez mettre ce que vous voulez là -dedans, tout fichier qui nécessite un renommage, par exemple selon le nom du projet comme dans le cas du préfixe.

Dans la deuxième partie vous mettez tous les fichiers contenant des macros et qui nécessitent donc d'être modifié. Si vous avez créé des sous-dossiers contenant des fichiers avec des macros, vous mettez simplement le chemin relatif depuis la base du projet (pas la peine de mettre ./ devant).

Et enfin, dans la description, vous mettez la description... Du modèle :
Description = &quot;This project builds a Cocoa-based application written in Objective-C linked to Quartz and QuartzCore frameworks.&quot;;


Et voilà  vous avez votre modèle, sauvegardez les fichiers, placer le dossier du modèle dans le dossier de modèles que vous souhaitez (vous pouvez même ajouter un dossier dans Project Template ce qui créera une nouvelle section dans l'assistant d'Xcode) et vous redémarrez Xcode, votre nouveau modèle apparaà®t dans la liste.

Réponses

  • Philippe49Philippe49 Membre
    janvier 2008 modifié #2
    Très clair !

    dans 1200058753:

    Maintenant, pour ajouter les frameworks, il suffit d'ouvrir directement le projet, vous faites comme d'habitude pour ajouter un framework, clic-droit sur le dossier "Linked Framework" : Add --> Existing Frameworks... vous ajoutez les frameworks que vous souhaitez, dans notre cas Quartz et QuartzCore et c'est bon pour ici.


    Et éventuellement QTKit si vous l'indiquez dans le fichier prefix.




    Le template doit pouvoir se mettre aussi dans un répertoire local à  l'utilisateur ?
  • psychoh13psychoh13 Mothership Developer Membre
    janvier 2008 modifié #3
    Jamais essayé, mais ça m'étonnerait.

    [EDIT]
    J'ai essayé mais ça ne marche pas, ce qui n'est pas étonnant, puisque le dossier Library n'est pas un dossier de bibliothèque "officiel" il est local au dossier Developer, donc Xcode ne se base que sur celui-ci.
  • Philippe49Philippe49 Membre
    13:30 modifié #4
    De la même façon, on peut ajouter des propositions de sous-classes dans
    Developer/Library/Xcode/File Templates/Cocoa/

  • psychoh13psychoh13 Mothership Developer Membre
    13:30 modifié #5
    Ah ben ça tu ajoutes ce que tu veux, tu peux même je pense t'ajouter des modèles de fichiers où tu as 3 ou 4 types de fichiers ensemble.
    Tu peux modifier le contenu des modèles pour avoir l'indentation comme tu la souhaites dès le début, tu peux ajouter des macros pour la complétion du code, des scripts, etc.
  • Philippe49Philippe49 Membre
    13:30 modifié #6
    dans 1200058753:

    Si vous souhaitez ajouter des fichiers "par défaut" comme par exemple une classe en plus, il vous suffit de les ajouter là  où vous voulez dans votre projet, vous pouvez par ailleurs récupérer les commentaires de début de fichier dans main.m et les mettre au début de vos fichiers.


    Un problème : Lors de la création d'un projet selon le template, le fichier par défaut apparaà®t bien, mais les transformations que l'on fait ensuite se reportent sur le modèle, et non sur "l'instance" de ce modèle.
    Il doit donc falloir bidouiller sur les fichiers du bundle pour que cela fonctionne correctement.
Connectez-vous ou Inscrivez-vous pour répondre.