2010-12-13 31 views
0

J'ai une application pour iPad qui peut avoir plusieurs goûts différents, et j'essaie de décider comment faire ces versions alternatives. Ils ont seulement quelques différences de code source, et diffèrent principalement dans les fichiers de données de ressources (xml et une très grande quantité de fichiers binaires).Dois-je dupliquer un projet xcode ou des sections #define?

1) Dois-je dupliquer le projet et ramifier la poignée de fichiers source et inclure les ressources appropriées séparément pour chacun? Cela semble plus d'une difficulté de maintenance que j'ajoute des fichiers au projet et fait d'autres choses de base autres que modifier les fichiers partagés.

2) Ou devrais-je utiliser #defines pour créer la saveur appropriée que je veux à tout moment, puis ifdef sortir des fichiers entiers en conséquence? Cela semble plus simple mais mon soupçon est que je ne serai pas en mesure de trouver un moyen facile d'exclure/inclure des fichiers de ressources, et ce serait un briseur d'affaire.

Avez-vous des suggestions sur la façon de traiter la question des ressources dans l'option 2, ou s'il y a une autre approche qui est préférable? Qu'en est-il de la création de cibles séparées dans un seul projet XCode?

Répondre

2

Chaque cible doit inclure les fichiers appropriés pour cette application; pas besoin de ifdefs de cette façon.

+0

Serais-je en mesure de le faire avec les ressources du projet aussi? C'est à dire. si j'ai 200 fichiers dans mes ressources que je veux pour proj 1 et 200 autres pour proj 2, puis-je spécifier lequel inclure à travers l'info config cible? Savez-vous ce que ce paramètre est? – Joey

+0

Bien sûr. Chaque cible possède sa propre liste de fichiers (sources, ressources, bibliothèques) à inclure. Vous pouvez contrôler les fichiers d'une cible en faisant glisser les fichiers dans la phase "Copier les ressources de l'ensemble" de la cible. Vous pouvez également voir/modifier les fichiers inclus dans la cible en cours en utilisant la case à cocher dans la colonne cible (bullseye icon) de la liste des fichiers dans la fenêtre principale du projet. –

+0

Cela a bien fonctionné pour obtenir la construction de cibles séparées. J'avais essayé d'utiliser le paramètre défini par l'utilisateur EXCLUDED_SOURCE_FILE_NAMES et cela provoquait des problèmes en excluant les fichiers de même nom dans différents dossiers, mais votre approche a résolu les problèmes. Cependant, j'ai ce problème où la construction d'une cible semble tromper l'autre cible en pensant qu'elle est à jour. Dois-je simplement modifier les paramètres d'emplacement de construction "Chemin des produits de construction par config" et "Chemin des fichiers de construction intermédiaires par config" pour résoudre ce problème, ou ai-je fait quelque chose de mal jusqu'à ce point? – Joey