2010-04-18 5 views
1

Je vais créer une application Mac écrite en Obj-C avec Xcode. Pour l'amour de l'argument disons qu'il aura 10 caractéristiques optionnelles. J'ai besoin d'un moyen d'activer ou de désactiver ces fonctionnalités pour créer des versions personnalisées de l'application. Ces builds seraient automatisés (probablement via le terminal Mac OS X), donc j'aurais besoin d'un moyen d'indiquer lesquelles sont activées/désactivées au moment de la construction (un fichier de configuration ou des arguments CLI seraient idéaux). Alors, quelle est la meilleure façon d'accomplir cela? J'essaye de planifier ceci avant que je commence à coder de sorte qu'il y ait une séparation appropriée dans ma base de code pour permettre à ces dispositifs d'aller et venir. Idéalement, la construction personnalisée ne contiendrait que du code compilé pour les fonctionnalités qu'elle devrait avoir. En d'autres termes, je ne veux pas toujours compiler toutes les fonctionnalités et les conditionner lors de l'exécution.Créer des constructions personnalisées d'un projet Xcode

Répondre

3

Vous pouvez utiliser des configurations Xcode à cette fin; pour chaque configuration, vous pouvez inclure un en-tête de préfixe différent, par exemple. Vous pouvez ensuite déclencher des compositions à partir de la ligne de commande via xcodebuild.

Si vous préférez l'approche du fichier de configuration, vous pouvez utiliser un fichier .xcconfig à la place pour définir les paramètres de construction de Xcode.

Le Xcode Build System Guide describes ces deux approches.

+0

Je ne pense pas créer manuellement une configuration pour chaque combinaison est très plausible: http : //www.wolframalpha.com/input/? i = combinaisons + de + 10 I d on ne veut pas faire 1 024 configs :-) Mais je vais regarder dans l'idée du fichier .xcconfig. Merci! – macinjosh

+0

@macinjosh Avez-vous trouvé un moyen de le faire? –

0

utilisez #ifdef et l'indicateur -D sous les indicateurs du compilateur pour contrôler si les éléments sont compilés ou non. Vous pouvez configurer beaucoup de différentes configurations de cette façon si vous le souhaitez, et avoir juste les configurations de construction de xcode fonctionnent bien.

#include <stdio.h> 

int 
main (void) 
{ 
#ifdef TEST 
    printf ("Test mode\n"); 
#endif 
    printf ("Running...\n"); 
    return 0; 
} 

sortie 1:

$ gcc -Wall -DTEST dtest.c 
$ ./a.out 
Test mode 
Running... 

sortie 2:

$ gcc -Wall dtest.c 
$ ./a.out 
Running... 

source: http://www.network-theory.co.uk/docs/gccintro/gccintro_34.html

Questions connexes