web-dev-qa-db-fra.com

Comment définir le chemin d'inclusion dans un projet xcode

J'essaie d'utiliser une bibliothèque C dans un projet Objective-C Xcode.

La structure du répertoire des bibliothèques est la suivante:

-- include/
    |-- config.h
    |-- lib/
    |    |-- file1.h
    |    |-- file2.h
    |    |-- file3.h

Les documents de la bibliothèque indiquent qu'il faut inclure fichier1.h et fichier1.h inclure fichier2.h et fichier3.h.

Je reçois des erreurs de type "fichier non trouvé" pour les inclusions de fichier2.h et fichier3.h`. Ils sont inclus par file1.h de la manière suivante:

#include <lib/file1.h>
#include <lib/file2.h>

Je lis ici que ces crochets indiquent au préprocesseur de rechercher les fichiers d'inclusion le long du chemin spécifié par la variable d'environnement INCLUDE, par opposition à la recherche dans le même répertoire que le fichier contenant le #include.

J'ai donc ajouté la variable d'environnement INCLUDE dans Xcode en allant dans Product-> Edit Scheme .. et en le réglant sur /the-whole-path-to/include/ cependant, je reçois toujours des erreurs de fichier non trouvé.

Les fichiers sont inclus avec succès si je change de fichier pour les inclure comme ceci:

#include "file2.h"

mais je préférerais ne pas le faire pour tous les fichiers de la bibliothèque.

Comment puis-je réparer cela?

53
RyanM

Deviner.

Tout ce que vous avez à faire est d’ajouter le drapeau -I à votre configuration sous "Autres drapeaux C"

Dans les paramètres de construction de votre cible, recherchez "Other C Flags" et ajoutez -I/path-to-include/

Voici une capture d'écran: enter image description here

50
RyanM

Dans la version 5.0.2 de XCode, le meilleur moyen d'y parvenir est probablement de l'ajouter au volet "Chemins de recherche" de la cible. Ce fut (pour moi) localiser incroyablement pas intuitif. Voici comment j'y suis arrivé, pour ceux aussi confus que moi:

Dans la colonne de gauche, cliquez sur l'icône Navigateur de projet (qui ressemble à un dossier). Ensuite, cliquez sur l'entrée du projet. Cela devrait montrer un tas de paramètres dans le volet principal. En haut de ce volet, cliquez sur "Paramètres de construction". Cela montre un tas d'entrées ... dont une appelée "Chemins de recherche" ... mais vous ne pouvez pas ajouter de chemin de recherche ici! Cela m'a fait grincer des dents pendant un bon moment. jusqu'à ce que je sache que le nom du projet en haut de cette fenêtre était un menu déroulant; choisissez l'option cible dans ce menu déroulant, et vous devriez maintenant pouvoir double-cliquer sur "En-têtes de recherche" et effectuez les modifications nécessaires.

Oh, la joie des interfaces graphiques fous.

50
John Clements

J'ai résolu ce problème dans Xcode 5.0.1 en utilisant les paramètres de construction du projet (comme l'ont noté John et Ian ci-dessus, mais je ne peux pas commenter, car <50 rep).

Nouvelle info:

Lors de l'ajout d'inclus à tilisateur Chemins de recherche d'en-tête, je devais également définir l'option Toujours rechercher les chemins d'utilisateurs en Oui.

Lors de l'ajout d'inclusions à des chemins de recherche d'en-tête (non-utilisateur), l'option Toujours rechercher les chemins d'utilisateurs n'est pas requise.

11
Matt

Essaye ça:

1 - sélectionnez votre fichier de projet dans le volet Xcode de gauche
2 - assurez-vous que votre projet est sélectionné dans le volet Xcode du milieu
3 - sélectionnez "Paramètres de construction" en haut du volet Xcode du milieu
4 - assurez-vous que "Tous" et "Combinés" sont sélectionnés juste en dessous de "Paramètres de construction"
5 - saisissez un en-tête dans le champ de recherche juste en dessous de "Paramètres de création"

Vous devriez voir les champs du chemin de recherche prêts à être modifiés dans le volet central.

8
russes

Bien que cela fonctionne, il est probablement préférable de le placer sous l'onglet "Chemins de recherche".

4
imallett

Vous pouvez utiliser "Autres indicateurs C" ou "HEADER_SEARCH_PATHS" pour spécifier les chemins d'inclusion afin de rechercher un en-tête pour votre exécutable.

2
parasrish