(résolu) Réglage d'architecture pour compilation.

tabliertablier Membre
mars 2011 modifié dans API AppKit #1
Il existe des pré-réglages d'architectures pour la compilation. J'ai besoin du pré-réglage "Standard 32-bit Universal" qui existait avec Xcode 3.2.5 et qui n'existe plus sous Xcode 3.2.6. J'ai beau fouiller à  droite ou à  gauche, je ne trouve les pré-réglages nulle part, ni dans les .make, ni dans les .plist! C'est peut être une macro?  Peut-être n'ai-je pas cherché au bon endroit?
J'ai aussi trouvé la documentation "Xcode Build Setting Reference" (+ dérivés), c'est hélas un peu costaud pour moi!
Y-a-t-il un moyen de récupérer un pré-réglage d'architecture dans Xcode 3.2.5 et de le reporter dans le 3.2.6?

Nota: je souhaite compiler pour "10.5 ppc+intel" et "10.6 intel". J'ai essayé de compiler en 32/64-bit intel et j'obtiens l'alerte:
ld: warning: in /developpeur/SDKs/MacOSX10.6.sdk/System/Library/Frameworks//AppKitScripting.framework/AppKitScripting, missing required architecture x86_64 in file
idem avec le SDK 10.5. Donc 32-bit obligatoire!

Réponses

  • tabliertablier Membre
    11:53 modifié #2
    Sans réponse, J'ai continué à  chercher et j'ai trouvé (je pense) comment modifier les définitions des pré-réglages d'architecture pour la compilation. Ces définitions sont dans le fichier:
    /developper/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec
    et ressemble à  (Xcode 3.2.6):
    {
    Type = Architecture;
    Identifier = Standard;
    Name = "32-bit Intel";
    Description = "32-bit Mac OS X architectures";
    ListInEnum = YES;
    SortNumber = 1;
    RealArchitectures = (
    i386,
    );
    ArchitectureSetting = "ARCHS_STANDARD_32_BIT";
    },
    ressemble à  (Xcode 3.2.5):
    {
    Type = Architecture;
    Identifier = Standard;
    Name = "32-bit Universal";
    Description = "32-bit Mac OS X Universal architectures";
    ListInEnum = YES;
    SortNumber = 1;
    RealArchitectures = (
    i386,
    ppc,
    );
    ArchitectureSetting = "ARCHS_STANDARD_32_BIT";
    },
    A partir de là , il est facile de corriger des définitions ou d'en ajouter en faisant attention à  ne pas avoir d'identificateurs, de SortNumber et d' ArchitectureSetting identiques. Mettre ListInEnum à  YES pour que le nom de la définition soit affiché dans le menu de sélection. Dans Xcode 3.2.6, j'ai ajouté un pré-réglage "32-bit Universal" et ça marche parfaitement.
  • AliGatorAliGator Membre, Modérateur
    11:53 modifié #3
    De manière générale quand tu modifies des fichiers de Spécification de Xcode, ne pas les modifier dans les dossiers /Developper/xxx/Developer/Library/Xcode/Specifications/ mais mettre tes modifications persos dans le dossier Specifications de Application Support, c'est fait pour (et ça évite de modifier l'install de Xcode sur laquelle en plus normalement tu n'as pas les droits et ça évite qu'elles soient écrasées lors d'une prochaine install)

    C'est valable pour quand tu fais des File Templates, des Project Templates, des Custom TextMacros, des Custom DataFormatters, ou d'autres trucs du genre, et même si j'ai jamais customisé les xcspecs c'est valable pour cela aussi si je ne m'abuse.
  • tabliertablier Membre
    11:53 modifié #4
    J'y ai pensé car tu en as déjà  parlé. Mais je ne sais pas vraiment comment faire. Faut-il le faire dans la library générale, ou dans celle de mon compte? Ensuite, dans  "/Application support" faut-il se placer dans "/Apple" ou à  coté. Faut-il créer un dossier "Xcode"? "developper"? (ou autre nom)? ... etc  Les questions sont si nombreuses que je ne vais pas te demander d'y répondre, mais si tu as un lien sur l'explication je suis preneur. ça m'évitera deux jours de recherche!
  • cyranocyrano Membre
    mars 2011 modifié #5
    je vais peut etre dire une connerie, mais Ali rectifira  :D

    il faut le meme chemin que la library systeme

    /Developper/xxx/Developer/Library/Xcode/Specifications/

    donc tu mets dans Xcode/Specifications/

    apres tu choisis dans shared ou ton compte

  • AliGatorAliGator Membre, Modérateur
    11:53 modifié #6
    A vrai dire pour les xcspec je sais pas l'emplacement exact (faut essayer), mais si ça peut te donner une idée voici la structure de mon dossier "Application Support/Developer/Shared/Xcode" (moi je mets dans mon dossier ~/Library perso, mais à  toi de voir si tu préfères le mettre dans le /Library commun à  tous les users, ça dépend de ce que tu veux)
  • tabliertablier Membre
    11:53 modifié #7
    Ok, merci. Lorsque j'aurai trouvé je vous tiendrai au courant.
  • tabliertablier Membre
    11:53 modifié #8
    Comme promis, voilà  ce que j'ai trouvé:
    Pour être prise en compte, l'architecture des dossiers indiquée par AliGator  marche parfaitement, donc:
    "Application Support/Developer/Shared/Xcode/Specifications/MacOSX Architectures.xcspec

    Conditions qu'il me semble avoir trouvées:
    • le nouveau fichier n'a pas besoin d'avoir la copie des données de l'original. Il suffit qu'il contienne la ou les architecture(s) que vous ajoutez.
    • Si deux architectures sont identiques seule la première trouvée est affichée.
    • Suivant la manière dont sont numérotées les nouvelles architectures, leur place dans le menu déroulant seront différentes. Exemples:
      architectures originales:      O-1, O-2, O-3
      architectures nouvelles:      N-1, N-2
      ordre du menu déroulant:  O-1, N-1, O-2, N-2, O-3
      ---
      architectures originales:      O-1, O-2, O-3
      architectures nouvelles:      N-2, N-4
      ordre du menu déroulant:  O-1, O-2, N-2, O-3, N-4
  • AliGatorAliGator Membre, Modérateur
    mars 2011 modifié #9
    Merci pour ce retour.

    Par contre ce dont j'ai "peur" c'est qu'en le mettant là , il soit pris en compte à  la fois pour tes projets OSX ET pour tes projets iOS (malgré le nom "MacOSX Architectures" du fichier, c'est un peu comme les xctxtmacros, il se fiche du nom du fichier au final, il les charge tous) ?
    Il y a peut-être un moyen de mettre des sous-dossiers spécifiques pour OSX ou pour iPhone pour n'avoir certains fichiers de specs que pour une des deux cibles et pas les deux ? (Oui mais lequel ?)
  • tabliertablier Membre
    11:53 modifié #10
    Je n'en ai pas tenu compte car je ne développe pas du tout pour iPhone ou iPad.
    Néanmoins, je viens d'essayer de créer un projet de type tabBar (?), et effectivement je récupère l'architecture créée pour Mac OSx. Je vais voir si je peux changer cela en compliquant l'architecture de dossier.
  • tabliertablier Membre
    mars 2011 modifié #11
    J'abandonne! Je ne trouve pas de combinaison de dossier qui marche et sépare les architectures supplémentaires d'IOS de celles de Mac OSx. Je me suis reporté à  la doc et c'est presque imbitable! Des tas d'informations dans tout les sens et juste l'information qu'on peut définir un build setting personnel!
      >:D  JE NE SUIS PAS DOUE AVEC LA DOC D'APPLE!!!!

    Les documents que j'ai trouvé et qui semblent (?) avoir des relations avec ce que je cherche:
      Xcode Build System Guide
      Xcode Build Setting Reference
      Xcode User Default Reference
Connectez-vous ou Inscrivez-vous pour répondre.