Comment définir un symbole de préprocesseur dans Xcode
Est-il possible de définir un symbole pour la compilation conditionnelle par la mise en place des propriétés dans un projet Xcode?
Mon but est de créer un symbole qui est disponible pour tous les fichiers, sans avoir à recourir à l'importation/include, ainsi que d'un ensemble de classes communes peut avoir un comportement spécial dans certains projets. Comme les suivantes, mais avec mes propres symboles.
#if TARGET_IPHONE_SIMULATOR
...
#endif
Vous devez vous connecter pour publier un commentaire.
Aller à votre Cible ou les paramètres de Projet, cliquez sur l'icône d'Engrenage en bas à gauche, et sélectionnez "Ajouter un Paramètre Défini par l'Utilisateur". Le nouveau nom du paramètre doit être
GCC_PREPROCESSOR_DEFINITIONS
, et vous pouvez taper vos définitions dans le champ de droite.Par Steph commentaires, la syntaxe complète est:
Notez que vous n'avez pas besoin le '='s si vous voulez juste #définir un symbole, plutôt que de donner une valeur (pour
#ifdef
consolidés)Vous n'avez pas besoin de créer un paramètre défini par l'utilisateur. Le construit-dans la définition de "Macros du Préprocesseur" fonctionne très bien.
le texte d'alt http://idisk.mac.com/cdespinosa/Public/Picture%204.png
Si vous avez plusieurs objectifs ou des projets qui utilisent le même préfixe de fichier, utiliser les Macros du Préprocesseur Pas Utilisé Dans les en-Têtes Précompilés au lieu de cela, de sorte que les différences dans votre définition de macro ne pas déclencher une supplémentaires inutiles définir des en-têtes précompilés.
Comme un additif, si vous utilisez cette technique pour définir des chaînes dans votre cible, c'est de cette façon que j'avais de les définir et de les utiliser:
Dans le Build Settings -> Macros du Préprocesseur, et oui les barres obliques inverses sont essentiels dans la définition:
Et dans le code source:
Vous pouvez utiliser le
*_Prefix.pch
fichier à déclarer projet à l'échelle des macros.Ce fichier est généralement en vous d'Autres Sources groupe.
C'est en vertu de la "GCC 4.2 Prétraitement" (ou il suffit de mettre "prepro" dans la zone de recherche)...
...cependant, pour la vie de moi je ne peux pas le faire fonctionner.
J'ai mon niveau de Débogage et de publication des configurations, et je veux définir DEBUG=1 dans la configuration de débogage. Mais après l'ajout de la valeur:
(dans la fenêtre des paramètres) > les Macros du Préprocesseur : DEBUG=1
...jamais imprime/est appelée. C'est me rend fou...
#if DEBUG
à la vie 🙂 stackoverflow.com/a/47395485/2778502En réponse à Kevin Laïcs commentaire (voir cdespinosa de réponse), à propos de la GCC Prétraitement section apparaît pas dans vos paramètres de construction, faites de l'Actif SDK celui qui dit: (Base SDK) et de la présente section s'affichent. Vous pouvez le faire en choisissant le menu Project > Set Active Target > XXX (Base SDK). Dans les différentes versions de XCode (Base SDK) peut-être différents, comme (Réglage de Projet ou d'un Projet par Défaut).
Après que vous obtenez cette section s'affiche, vous pouvez ajouter vos définitions de Macros de traitement plutôt que de créer un paramètre défini par l'utilisateur.
Pour Xcode 9.4.1 et projet C++. L'ajout de
const char*
Macros du Préprocesseur à la fois Debug et Libération construit.Sélectionnez votre projet
Sélectionnez Paramètres De Construction De La
De Recherche "Macros Du Préprocesseur"
Ouvrir la liste interactive
Ajouter vos macros et n'oubliez pas d'échapper à la citation
Utiliser dans le code source commune
const char*
Vous pouvez dupliquer la cible qui a le prétraitement de la section, renommez-le nom que vous souhaitez modifier votre macro Préprocesseur valeur.