2012-02-07 3 views
4

J'ai un projet que je divise en deux cibles. Le projet original à cible unique utilise un certain nombre de commandes de définition, mais j'ai besoin que ces valeurs soient maintenant différentes en fonction de la cible que je construis.Comment spécifier des commandes #define pour mes deux cibles différentes

Quelle est la bonne façon de procéder? Dois-je utiliser les chaînes NS déclarées sur AppDelegate? Ou puis-je utiliser une instruction #if lorsque les paramètres #defines?

Toute aide, très appréciée.

Répondre

3

Une approche serait comme ceci:

#if defined(MON_TARGET_A) 
    #define MON_TARGET_NAME "App A" 
#elif defined(MON_TARGET_B) 
    #define MON_TARGET_NAME "App B" 
#else 
    #error "which target are you building?" 
#endif 

ajouter ensuite MON_TARGET_A ou MON_TARGET_B aux paramètres de préprocesseur de votre cible.

Généralement, vous utiliserez GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS et non GCC_PREPROCESSOR_DEFINITIONS car ce dernier peut empêcher le partage des en-têtes PCH.

Pour ajouter, allez à:

  • Navigator Project -> Projet -> Cible -> Créer des paramètres

puis déposez GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS dans le champ de recherche et définir sa valeur à quelque chose comme: MON_TARGET_A $(inherited)

+0

Justin! Merci! C'est cloué. Vous da man! – theDuncs

+0

@DuncanCampbell vous êtes les bienvenus - acclamations :) – justin

+0

Pourquoi le préfixe MON _..., juste par curiosité? –

0

Vous pouvez ajouter des macros de préprocesseur supplémentaires dans vos paramètres cible (Préprocesseur-> Macros du préprocesseur) et utiliser #ifdef.

C'est l'approche la plus flexible.

+0

Max! Tu étais sur, mais Justin est arrivé le premier. Merci quand même monsieur! – theDuncs

Questions connexes