64 votes

Quelles sont les définitions définies par Xcode lors de la compilation pour iPhone

J'écris du code semi-portable et je veux pouvoir détecter quand je compile pour iPhone. Donc, je veux quelque chose comme #ifdef IPHONE_SDK... .

Vraisemblablement, Xcode définit quelque chose, mais je ne vois rien sous les propriétés du projet, et Google ne m'aide pas beaucoup.

113voto

Airsource Ltd Points 14291

C'est dans le SDK docs sous "la Compilation du code source conditionnellement"

Les définitions pertinentes sont TARGET_OS_IPHONE et TARGET_IPHONE_SIMULATOR, qui seront définies à la condition que vous

#include "TargetConditionals.h"

Depuis que de ne pas exister non sur les plateformes apple, vous pouvez envelopper votre comme ceci

#ifdef __APPLE__
   #include "TargetConditionals.h"
#endif

avant d'inclure ce fichier

Ainsi, par exemple, si vous voulez seulement de compiler un bloc de code si vous êtes à la construction de l'appareil, alors vous devriez le faire

#if !(TARGET_IPHONE_SIMULATOR)
...
#endif

24voto

lajos Points 13791

Pour examiner toutes les macros définies, ajoutez ceci aux "Autres drapeaux C" de votre configuration:

 -g3 -save-temps -dD
 

Vous obtiendrez des erreurs de construction, mais le compilateur dumpera toutes les définitions dans des fichiers .mi dans le répertoire racine de votre projet. Vous pouvez utiliser grep pour les regarder, par exemple:

 grep define main.mi
 

Lorsque vous avez terminé, n'oubliez pas de supprimer ces options du paramètre de construction.

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