2010-05-04 7 views
9

J'ai été chargé de travailler sur un projet qui a des attributs confus.Indicateurs de compilateur spécifiques pour des fichiers spécifiques dans Xcode

Le projet est de nature à ne pas être compilé pour le simulateur iPhone et le périphérique iPhone avec les mêmes paramètres de compilation. Je pense que cela a à voir avec le besoin d'être spécifiquement compilé pour x86 ou arm6/7 en fonction de la plate-forme cible. Par conséquent, les paramètres de construction du projet, lorsqu'ils sont affichés dans la vue Paramètres de construction de Xcode, ne me permettent pas de définir des indicateurs de compilation spécifiques pour des fichiers spécifiques. Cependant, le développeur précédent qui a travaillé sur ce projet a déclaré en quelque sorte la ligne:

CE7FEB5710F09234004DE356 /* MyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7FEB5510F09234004DE356 /* MyFile.m */; settings = {COMPILER_FLAGS = "-fasm-blocks -marm -mfpu=neon"; }; }; 

Est-il possible de le faire sans modifier le fichier de projet à la main? Je sais que l'édition du fichier de projet peut entraîner une rupture complète, donc je préfère ne pas le faire, car je ne connais évidemment pas autant que le développeur précédent.

Donc, pour clarifier, la question est la suivante:

La construction échoue lors de la compilation pour le simulateur à moins que je retire le drapeau -fasm-blocks. La génération échoue lors de la compilation pour le périphérique à moins que j'ajoute le drapeau -fasm-blocks. Est-il possible de définir cet indicateur par fichier sans modifier le fichier de projet à la main?

+0

Vous pouvez utiliser '#if! TARGET_IPHONE_SIMULATOR' pour filtrer le code asm. – kennytm

Répondre

7

Vous pouvez définir des options de compilateur supplémentaires pour les fichiers source individuels comme suit:

  • sélectionnez d'abord la cible que vous allez construire
  • clic droit sur le fichier source
  • sélectionnez « Get Info »
  • cliquez sur le "Build" onglet
  • définir vos drapeaux de compilateur supplémentaires

Cependant, il semble qu'une meilleure solution dans votre cas consiste simplement à dupliquer la cible et à avoir deux cibles: une pour un périphérique réel et une pour le simulateur. Héritez les paramètres de construction courants à partir du niveau du projet et modifiez simplement les paramètres de construction par cible si nécessaire.

+0

Merci! Donc, cela peut répondre à l'autre question que j'allais poser, ce qui était comment pourrais-je automatiser le drapeau de compilation? Je peux configurer une phase de script d'exécution qui s'exécute avant la phase de compilation des sources et définir la valeur d'une variable d'environnement flags du compilateur, en fonction de la sortie de la variable d'environnement de la plateforme cible. Le compilateur plat ne doit être défini sur un fichier particulier, donc je pense qu'il peut être exagéré d'installer deux cibles et créer un drapeau de compilateur de projet ... – Jasarien

2

Appelez GetInfo pour le fichier spécifique, vous pouvez définir les paramètres de construction pour ce fichier. Voir aussi le Guide de gestion de projet XCode à ce sujet. après

6

This blog par Joshua Nozzi explique comment faire cela dans Xcode 4, où il dit:

... sélectionnez votre projet dans le navigateur du projet, sélectionnez la cible concernée (vous pouvez avoir qu'un seul), puis sélectionnez l'onglet Build Phases. Développez la phase Compiler les sources et l'alto! Une colonne Indicateurs de compilation vous permet de définir les indicateurs de chaque fichier pour cette cible.