101 votes

Comment définir un symbole de préprocesseur dans Xcode

Est-il possible de définir un symbole pour la compilation conditionnelle en définissant des propriétés dans un projet Xcode ?

Mon but est de créer un symbole qui soit disponible pour tous les fichiers, sans avoir à utiliser import/include, afin qu'un ensemble de classes communes puisse avoir un comportement spécial dans certains projets. Comme ce qui suit, mais avec mes propres symboles.

#if TARGET_IPHONE_SIMULATOR
    ...
#endif

0 votes

2voto

Petr Javorik Points 431

Pour Xcode 9.4.1 et un projet C++. Ajout de const char* Macros du préprocesseur à la fois Déboguer y Communiqué de presse les constructions.

  1. Sélectionnez votre projet

    select project

  2. Sélectionnez Paramètres de construction

    select build settings

  3. Recherche " Macros du préprocesseur "

    search1 search2

  4. Ouvrir une liste interactive

    open interactive list

  5. Ajoutez vos macros et n'oubliez pas d'échapper aux guillemets.

    add path

  6. Utilisation dans le code source comme commun const char*

    ...
    #ifndef JSON_DEFINITIONS_FILE_PATH
    static constexpr auto JSON_DEFINITIONS_FILE_PATH = "definitions.json";
    #endif
    ...
    FILE *pFileIn = fopen(JSON_DEFINITIONS_FILE_PATH, "r");
    ...

1voto

Mark24x7 Points 752

En réponse au commentaire de Kevin Laity (voir la réponse de cdespinosa), à propos de la section GCC Preprocessing qui n'apparaît pas dans vos paramètres de compilation, faites du SDK actif celui qui dit (Base SDK) après lui et cette section apparaîtra. Vous pouvez le faire en choisissant le menu Project > Set Active Target > XXX (Base SDK). Dans différentes versions de XCode (Base SDK) peut être différent, comme (Project Setting ou Project Default).

Après avoir fait apparaître cette section, vous pouvez ajouter vos définitions aux macros de processeur plutôt que de créer un paramètre défini par l'utilisateur.

0voto

kslcam Points 207

Vous pouvez dupliquer la cible qui contient la section de prétraitement, la renommer au nom que vous voulez, puis modifier la valeur de votre macro de prétraitement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X