web-dev-qa-db-fra.com

Liaison d'une bibliothèque statique à un projet iOS dans Xcode 4

J'ai un projet (AQGridView) qui se compile dans une bibliothèque statique, mais je n'arrive pas à l'ajouter à mon projet.

Faire glisser le projet dans mon projet crée un espace de travail et, si je tente de lier le libAQGridView.a du fichier DerivedData, il ne le reconnaît pas comme une bibliothèque. Je ne suis pas sûr de ce que je fais mal.

C'est le projet AQGridView. Quelqu'un sait-il spécifiquement comment l'utiliser dans un projet Xcode 4?

74
Matt Hudson

Je fais ceci comme suit:

  1. Faites glisser dans le projet de bibliothèque statique. Si le projet de bibliothèque statique est ouvert dans Xcode, fermez-le maintenant.
  2. Sélectionnez le projet principal dans le navigateur de projet (le projet auquel j'ajoute la bibliothèque statique) et dans l'éditeur, sous l'en-tête CIBLES dans la colonne de gauche, sélectionnez la cible de mon projet principal et accédez à l'onglet Phases de construction.
  3. Cliquez sur le "+" pour les dépendances cibles et ajoutez la dépendance cible d'icône de bibliothèque à partir du projet de bibliothèque statique ajouté.
  4. Cliquez sur le "+" pour Link Binary with Libraries et ajoutez l'icône de la bibliothèque située dans le dossier "Workspace".
  5. Il peut également être nécessaire de saisir un chemin de recherche d'en-tête pour les en-têtes du projet de bibliothèque statique si les liens sont liés de cette manière dans le projet de bibliothèque statique lui-même.

Si vous ne voyez pas le projet de bibliothèque statique imbriqué sous le projet principal dans le navigateur de projet du projet principal, la raison la plus probable est que le projet Xcode de la bibliothèque statique est toujours ouvert. Quittez Xcode et ouvrez le projet principal contenant le projet de bibliothèque statique imbriqué sans ouvrir le projet de bibliothèque statique d'origine lui-même. Vous devriez le voir apparaître sous forme de projet imbriqué dans votre projet principal.

93
Halle

Menu Xcode> Affichage> Utilitaires> Inspecteur de fichiers

Sélectionnez le fichier de bibliothèque statique, puis définissez 'Type de fichier' comme 'Code d'objet Mach-O' dans 'Identité et type'.

14
Kazuki Sakamoto

Recherchez votre fichier .a dans le Finder et faites-le glisser dans votre projet.

Sélectionnez l'option "Copier les éléments dans le dossier du groupe de destination (si nécessaire)" et ajoutez vos en-têtes à votre projet.

Maintenant, XCode 4 devrait automatiquement être lié à ce cadre pour vous.

Voici à quoi devrait ressembler la bibliothèque dans votre projet:

5

Les espaces de travail sont censés faciliter les choses, mais je ne le sais pas. Pour ce faire, je crée un espace de travail, ajoute mon projet principal, ajoute mon projet de bibliothèque. Puis entrez dans les phases de construction du projet principal et ajoutez la bibliothèque dans la section "Lier le binaire avec les bibliothèques", puis ajoutez la bibliothèque. Cela devrait être tout ce qui est nécessaire, du moins c'est ce que je lis, mais ce n'est pas le cas. Ce que je fais est d'aller dans les préférences Xcode, puis dans le volet Arbres sources. Ajoutez une arborescence source qui pointe vers les en-têtes de votre bibliothèque statique, puis revenez aux paramètres de construction de votre projet, puis à la clé Chemins de recherche des en-têtes, puis entrez $ {foo}, où "foo" correspond à ce que vous avez appelé l'arborescence source. .

C'est ce qui fonctionne pour moi, bien que je ne sache pas si c'est la meilleure ou la plus simple des manières de le faire.

5
Joey Gibson

Suivez la documentation d'Apple.

En bref:

  1. Liez votre cible à la bibliothèque.
  2. Ajouter -ObjC à 'Autres drapeaux de lieur' (OTHER_LDFLAGS) sous les paramètres de construction de la cible.

De plus, je devais ajouter la bibliothèque au schéma de mon projet principal, car la bibliothèque n'était pas visible dans les dépendances de la cible.

3
Corin

La réponse de Halle fonctionne pour moi avec un ajout:

  1. Archivez Paramètres de construction de la bibliothèque statique projetez la valeur Chemin du dossier des en-têtes privés (ou publics) et copiez-la.
  2. Ajouter une valeur copiée au projet client Paramètres de construction chemin de recherche d'en-tête ou chemin de recherche d'en-tête d'utilisateur en fonction de la directive include que vous utilisez
0
IZIordanov