Retrouver les .h des frameworks.

Je travaille sur les sources de l'émulateur Hatari. La partie Objective-C ne me pose pas de problème. Ce qui me pose des problèmes ce sont tous les  #include <xx.h> dans les fichiers en C, lorsque le xx.h est dans un dossier Headers d'un framework (SDL.h par exemple).


Si je compile avec ./configure  puis  make; make install  ça marche parfaitement!


Si je fais un projet Xcode, la compilation s'arrête avec l'erreur SDL.h file not found.


J'ai vérifié que j'ai donné les bons chemins pour les frameworks SDL, PNG et CAPSImage.  Je ne trouve pas comment indiquer au compilateur ou se trouvent tous les .h de ces frameworks.


Une solution qui parait marcher est de changer tous les <SDL_xx.h> en <SDL/SDL_xx.h> dans les 136 fichiers .C. (pénible)


Une autre solution serait d'ajouter dans le projet un groupe d'introduction de tous ces .h  


Il doit y avoir une solution plus globale pour que le compilateur trouve ces .h.


 Quelle est la bonne solution?


 


Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu as écrit ton post avec une machine à  écrire ? ^^
  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2014 modifié #3
    ça, c'est un ordinateur anti-espionnage ;)
  • Non!  Par principe j'évite d'écrire directement les posts. J'écris sous Textedit, puis je fais un copier-coller.  ça permet de se corriger, de faire des vérifications en cours d'écriture, et même de ne pas poster si on se rend compte qu'on dit des bêtises. Là , Textedit devait être bizarrement régler.  A propos de machine à  écrire vous devriez essayer ce vieux programme (à  vous rendre fou!!).


    Bon ça ne résout  pas mon problème!


  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2014 modifié #5

    Tu as ajouté le framework au projet ?


  • Oui, j'ai ajouté les trois frameworks au projet: SDL.framework, libpng.framework et CAPSImage.framework.


  • AliGatorAliGator Membre, Modérateur
    Tu as renseigné correctement les Build Settings FRAMEWORK_SEARCH_PATH et HEADER_SEARCH_PATH ?
  • tabliertablier Membre
    juillet 2014 modifié #8

    J'ai initialisé le FRAMEWORK_SEARCH_PATH correctement, mais (contrairement à  Xcode 3.2) je ne trouve pas le HEADER_SEARCH_PATH dans les build setings du 5.1.1.  Bon, j'y retourne ! Enfin, j'y retournerai ce soir, car maintenant je vais monter en montagne.


  • AliGatorAliGator Membre, Modérateur
    Bah y'a un champ de recherche pourtant dans les Build Settings ;)
  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2014 modifié #10


    Bah y'a un champ de recherche pourtant dans les Build Settings ;)




     


    Comme ci-joint


  • AliGatorAliGator Membre, Modérateur
    Ah, et si tu utilises la syntaxe #include <xxx.h>" avec des chevrons, cela veut normalement dire que c'est un include système, alors que par opposition un #include "xxx.h" avec des guillemets est un include d'un fichier local au projet.

    Donc la nuance peut jouer, pour savoir s'il va chercher les headers dans les Search Path système ou projet.

    Tu peux à  la limite contourner cela en passant le Build Setting "Always Search User Paths" à  YES, pour faire en sorte qu'il recherche dans les "User Header Search Path"... même si tu fais des #include <xxx.h>.

    ---

    Pour plus d'infos, sélectionne ce Build Setting et affiche la Quick Help dans le panneau de droite, l'aide explique ça assez en détail.
  • ça y est, je suis à  un peu plus de 1000 m d'altitude et j'espère que ça va me dé-congestionner les neurones.


    Vos posts sont très clairs. C'est bien là  ou j'ai cherché le HEADER_SEARCH_PATH  que je n'ai pas trouvé!


    J'y retourne!


  • Je confirme que je n'ai pas dans les Search Paths  de  HEADER_SEARCH_PATH  (image jointe).


    Donc, il faut que je trouve la manière d'ajouter un Header Search Paths.


     


  • AliGatorAliGator Membre, Modérateur
    Ce n'est pas possible. Tu as certainement filtré tes Build Settings

    1) Soit tu es en mode "Basic" et pas en mode "All" (sauf que c'est bizarre car dans ce cas tu n'aurais pas "Framework Search Path" non plus)

    2) Soit tu as mis un texte dans le champ de recherche qui fait que le setting HEADER_SEARCH_PATHS n'est pas trouvé par ce texte recherché et donc n'apparaà®t pas

    3) Soit tu utilises une ancienne version de Xcode qui permettait de n'afficher que les settings qui n'utilisent pas la valeur par défaut et ont une valeur de forcée (et s'affichent alors en gras) " chose qui à  ma connaissance n'est plus possible avec Xcode5, et c'est dommage d'ailleurs " ce qui fait que si tu n'as pas mis de valeur à  HEADER_SEARCH_PATHS il n'apparaà®tra pas

    Ou alors, ton Xcode ou ton projet est corrompu ou y'a un bug, mais bon...


  • ça y est, je suis à  un peu plus de 1000 m d'altitude et j'espère que ça va me dé-congestionner les neurones.




     




    Ou alors, ton Xcode ou ton projet est corrompu ou y'a un bug, mais bon...




     


    Ou alors monter plus haut ?  :)

  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2014 modifié #16


    Je confirme que je n'ai pas dans les Search Paths  de  HEADER_SEARCH_PATH  (image jointe).


    Donc, il faut que je trouve la manière d'ajouter un Header Search Paths.




     


    Je crois que tu aurais pû saisir HEADERS dans le champ de recherche, sinon, tu ne verrais pas la section Packaging.


     


    Essaies-toi de saisir "search" dans le champ de recherche.


     


    Question - dans quel dossier as-tu mis les frameworks?


  • tabliertablier Membre
    juillet 2014 modifié #17

    Mes frameworks sont dans /Library/Frameworks/  ce qui me parait correct.


    J'utilise Xcode 5.1.1 sous OSx 10.9.4.


    Il arrive un moment ou on se dit "J'efface tout et je recommence".  C'est maintenant!


    Je vous tiens au courant en suivant.



  • Ou alors monter plus haut ?



    J'ai essayé, ça ne marche pas! Jusqu'à  1900 mètres il n'y a plus d'amélioration!


     


    J'ai refait un projet en tenant compte de vos observations et j'ai ce qui me manquait (voir l'image).  En définitive, c'est le passage direct de Xcode 3.2.6 à  5.1.1 et mon manque de pratique du 5.1.1 qui sont en cause!


     


Connectez-vous ou Inscrivez-vous pour répondre.