web-dev-qa-db-fra.com

Inclure les en-têtes des frameworks ajoutés sur Xcode

Je veux travailler avec des frameworks tels que glew et cg, donc j'ai ajouté manuellement 

les frameworks nécessaires à mon projet en faisant un clic droit sur le projet -> Ajouter des fichiers à ...

et en choisissant le bon cadre. Le problème est, quand j'essaie d'inclure les fichiers d'en-tête,

Xcode ne peut en trouver aucun. J'espère que cette image aidera à comprendre:

enter image description here

Et:

enter image description here

L'erreur donnée concerne le framework glew, mais elle se produit également sur Cg.

Comme vous pouvez le voir à gauche, les cadres nécessaires ont été ajoutés.

Une idée sur la façon dont je peux inclure ces en-têtes?

Après avoir essayé d'ajouter les fichiers d'en-tête manuellement, j'ai eu une erreur d'architecture:

enter image description here

Je ne sais pas si c'est à ça que ça devrait ressembler ... Merci!

35
Itzik984

Avant de commencer, supprimez la structure et tous les fichiers que vous avez ajoutés en essayant de le faire fonctionner.

Ensuite, vous devez ajouter les frameworks dans le Build Phases de votre cible. Ensuite, allez dans Link Binary With Libraries et sélectionnez votre framework à partir de là. 

Cela devrait le faire. Vos en-têtes devraient être disponibles automatiquement après chaque #import directive. Si cela ne fonctionne pas (cela arrive parfois), je peux vous fournir des étapes supplémentaires.

Étapes supplémentaires:

Accédez aux paramètres de votre projet, dans les paramètres de construction:

  • Complétez le Framework Search Paths avec le chemin de votre framework
  • Faites la même chose avec User Header Search Path

Alors, ça devrait marcher. Si ce n'est pas le cas, vous devrez ajouter le chemin complet de votre en-tête dans la directive #import. Exemple:

#import "/path/to/my/header.h"


La documentation d'Apple disponible ici déclare:

  1. Dans le navigateur de projet, sélectionnez Votre projet 
  2. Sélectionnez votre cible
  3. Sélectionnez l'onglet 'Build Phases'
  4. Ouvrez 'Link Binaries With Libraries' Expander
  5. Cliquez sur le bouton '+'
  6. Sélectionnez votre cadre
  7. (facultatif) Faites glisser le cadre ajouté dans le groupe "Frameworks".
56
Jean

Dans mon cas, j'ai ajouté Framework Search Paths pour Target, mais il devrait être ajouté à Project

enter image description here

De plus, Always Search Users Path devrait être yes

6
CAMOBAP

Pour ceux dont l'auto-complétion échoue après l'ajout de la structure.

J'avais l'habitude d'ajouter des frameworks, en allant à Build Phases et en prenant l'option Link Binary with Libraries. Maintenant dans XCode 6.1, bien que le projet se construise bien, la complétion automatique dans XCode ne fonctionnait pas.

Donc, ce qu'il faut faire, c'est:

  1. Supprimez la structure déjà ajoutée de Project Navigator et également de Link Binary with Libraries.
  2. Ajoutez une structure au projet en sélectionnant simplement File -> Add Files to dans XCode.

Et l'auto-complétion commencera à fonctionner.

4
Kiran

Dans mon cas, le framework externe avait été téléchargé avec Windows et ajouté au projet. Ensuite, il a été transféré à OSX, où le projet Xcode a été construit et l’infrastructure externe ne s’est pas chargée correctement. J'imagine que c'est parce que Windows modifie le dossier framework en un dossier normal, ce qui pose problème à OSX.

La solution pour moi consistait simplement à télécharger le framework avec OSX et à le faire glisser dans le dossier framework du projet XCode.

2
Egil Sandfeld

Dans mon cas, je devais mettre à jour une version du framework, alors je viens de remplacer le fichier .framework dans le système de fichiers et ensuite, j'ai eu l'erreur que vous avez mentionnée dans la question.

Retirer le framework et le rajouter, jouer avec les chemins de recherche et toutes les autres suggestions n’a pas aidé.

Finalement, nettoyer le dossier de construction a fait l'affaire: 

Sélectionnez "Produit" dans le menu xcode, maintenez la touche Alt enfoncée et cliquez sur: "Nettoyer le dossier de construction".

Après cela, j'ai construit et exécuté le projet avec succès.

1
ofirbt