Insérer une static library dans Xcode avec les workspaces

vendredi 31 août 2012

Une workspace permet de rassembler plusieurs projets liés entre eux, pour mieux les coordonner.
Il s’agit en faite, d’étendre son projet en travaillant avec plusieurs « .xcodeproj » au sein d’une même session.
Cela peut être très utile pour insérer des frameworks de github comme générer un code bar ou autres fonctionnalités développés par d’autre développeur.

Voici les différentes étapes à suivre:

1. Glisser le dossier « .xcodeproj » de la bibliothèque depuis Finder ou Xcode, et le déposer dans le project navigator. Il faut coché le flag lié à Target!
build phase
Pour ma part, je ne prend jamais le fichier « .xcodeproj », je prends juste les fichiers « .h » et « .m » nécessaire que je place dans un dossier dans mon projet.
Ensuite, il faut s’assurer que ces fichiers se retrouve dans Build Phases > Compile Sources pour être repris lors de la compilation et édition des liens.
Compile source Si jamais ces fichiers ont été encodé sans ARC et que votre projet est en ARC, il existe un moyen pour contourner ce problème via le post suivant.

2. Allez dans Build Phases > Link Binary with Librairies et cliquez sur + pour choisir la bibliothèque statique à lier. Fichier .a. La bibliothèque apparaîtra en rouge car pas encore compilée.
N’oubliez pas non plus d’inclure les frameworks d’IOS utilisé dans le code de la librairie que vous importez.

3. Ajouter dans Build Settings > other linker flags (faire une recherche sur other linker flags) et rajouter la directive

-ObjC -all_load
.

4. Ajouter le path pour les headers:
Dans l’inspecteur de votre target principale, retrouvez l’option « Build Settings »/ »User Header Search Paths », et ajoutez-y le chemin du dossier contenant les entêtes (« Headers ») du projet tiers. Je vous conseille au passage d’utiliser la variable « $(PROJECT_DIR) » pour indiquer un chemin relatif. Attention : « User Header Search Paths » correspond aux commandes ‘#import « xxx.h »‘, alors que « Header Search Paths » est utilisé pour les ‘#import <>‘. Choisissez l’option qui correspond à votre bibliothèque (il vous suffit de jeter un œil aux entêtes), en activant si besoin l’option « recursive ». Il faut que le path mis soit entre double quotes !!!

Par contre lors de la création de l’archive pour déploiement, il faut parfois modifié dans Build Settings > skip install et mettre ce paramètre à « YES  » pour que l’archive génère qu’un seul binaire car pour certaine static library, elle comporte un binaire associé.

Tags: Développement , IOS , library , static , Xcode