web-dev-qa-db-fra.com

Quelles sont les bibliothèques reliant les options dans Xcode?

Depuis Xcode 7, il y a des options de liaison bibliothèque/framework dans Xcode

Accédez à l'application Target dans l'onglet projet

General -> Embedded Binaries
General -> Link Frameworks and Libraries
Build Phases -> Target Dependencies
Build Phases -> Link Binary with Libraries

Voici quelques façons que j'ai trouvées

  • L'utilisation de Alamofire indique Embedded Binaries option

Le Alamofire.framework est automatiquement ajouté en tant que dépendance cible, framework lié et framework embarqué dans une phase de construction de fichiers de copie qui est tout ce dont vous avez besoin pour construire sur le simulateur et un appareil.

  • Création de votre premier framework iOS montre que l'ajout de Library.xcodeproj dans l'espace de travail, puis Build Phases -> Link Binary with Libraries

  • Tutoriel Carthage: Mise en route montre que faire glisser Library.framework en General -> Link Frameworks and Libraries. Il semble General -> Link Frameworks and Libraries et Build Phases -> Link Binary with Libraries sont identiques

  • Carthage semble faire la différence entre iOS et OS X.

Si vous construisez pour OS X: Dans l'onglet "Général" des paramètres de votre application, dans la section "Binaires intégrés", faites glisser et déposez chaque framework que vous souhaitez utiliser depuis le dossier Carthage/Build sur le disque.

Si vous construisez pour iOS, tvOS ou watchOS: dans l'onglet "Général" des paramètres de votre application, dans la section "Frameworks et bibliothèques liés", faites glisser et déposez chaque framework que vous souhaitez utiliser à partir du dossier Carthage/Build sur disque.

Lecture Lien vers une bibliothèque ou un framework , nous savons que ces options concernent la liaison d'un framework dans notre application/framework.

Mais quelles sont les différences entre eux? Une option unique est-elle un catch all pour tous?

14
onmyway133

Pour les frameworks dynamiques construits avec carthage, j'utilise généralement cette configuration:

  • Liez la bibliothèque à n'importe quelle cible dans laquelle vous souhaitez l'utiliser. Vous en avez besoin pour pouvoir importer le framework dans votre code.
  • Incorporez la bibliothèque uniquement dans la cible d'application contenant. Cela copiera en fait le cadre dans votre bundle d'application. Si vous ne l'intégrez pas, votre application se bloquera au démarrage, car votre framework est introuvable.

Seule la cible de l'application est responsable de l'intégration de tous les cadres et de leurs dépendances. De cette façon, si une extension et l'application utilisent toutes deux un framework, elles ne seront distribuées avec l'application qu'une seule fois.

Pour l'interface Xcode:

  • faire glisser un cadre dans Général -> Les fichiers binaires intégrés ajouteront le cadre aux phases de construction "Lier le binaire avec les bibliothèques" et "Intégrer les cadres"
  • faire glisser un cadre dans Général -> Cadres et bibliothèques liés n'ajoutera le cadre qu'à la phase de construction "Lier le binaire aux bibliothèques".

Les vues sous Général semblent être remplies à partir de l'onglet des phases de construction, vous pouvez donc utiliser l'une ou l'autre.

J'espère que cela a du sens.

Edit: Les dépendances cibles ne sont que des cibles qui doivent être construites avant que la cible actuelle puisse être construite. Ainsi, la cible de votre application répertoriera son extension ici, afin que l'extension soit créée, chaque fois que vous créez votre application.

19
Kay