Comment dois-je gérer les dépendances entre les projets dans une Xcode espace de travail?
Je travaille sur une application iOS de projet et ajouter le json-projet de cadre à l'espace de travail. Le projet de navigation à gauche montre les deux projets, et que le régime de sélecteur montre les schémas des deux projets. Maintenant, je veux ajouter le libjson.une cible dans le json-projet de cadre en tant que dépendance sur l'iOS app cible de l'autre projet. Le résultat attendu est que chaque fois que l'application cible est construit, il s'appuie (si nécessaire) de la bibliothèque de la cible et des liens de l'application cible contre elle. Voici les solutions que j'ai essayé de faire ceci:
-
Construire à la fois dans le cadre du même régime. La façon dont je l'essayer c'est de modifier le schéma pour mon application, l'ajout de 'libjson.un "à la" Construction " du régime, et par le moyen de "Trouver des Dépendances Implicites" est cochée. Puis-je aller à la cible de l'éditeur pour mon application cible, et dans les "Phases de construction"->"Lien Binaire Avec les Bibliothèques", je choisis 'libjson.a' partir de la liste de l'espace de travail des bibliothèques.
Quand j'ai ensuite essayer de construire le schéma, je vois la construction de la bibliothèque de la cible, mais la construction de l'application cible échoue avec l'erreur liens "Bibliothèque introuvable -ljson" - ce qui suggère qu'il n'a pas effectivement découvert que la bibliothèque a été construite. En effet dans le navigateur de projets, l'entrée en vertu de l'application du projet de la bibliothèque est toujours rouge, indiquant que le fichier n'existe pas. -
Ajouter le json objectif explicite est la dépendance. Pour essayer cela, je n'ai pas modifier le build, mais aller à la cible de l'éditeur pour mon application cible et cliquez sur le bouton ajouter dans l'onglet "Cible des Dépendances". Pas de cibles à partir d'autres projets dans l'espace de travail, se montrer, c'est donc un non-starter.
-
Faites glisser le JSON projet dans un autre projet, puis ajoutez la cible comme une dépendance. C'est ce que j'aurais fait dans Xcode 3. Dans le navigateur de projets, je prends le projet de bibliothèque et faites-le glisser sur l'application du projet. Ceci nous amène à l'habituel "ajouter des fichiers" volet, dont je viens de rejeter en cliquant sur "Terminer".
Il y a maintenant deux des entrées pour le projet de bibliothèque dans le navigateur de projets: l'un au niveau le plus haut, et un en vertu de l'application du projet. Je peux maintenant ajouter à la bibliothèque de la cible comme une dépendance de l'application cible à l'aide de l'éditeur cible, et permet de relier contre ce, sans erreur dans le lien bibliothèques de phase. Mais il semble brisé: il y a plusieurs entrées pour le même projet dans le navigateur. Est-il un autre moyen pour ce faire?
Ce qui devrait être considéré comme le "Xcode 4-ish" la voie de la connexion de ces objectifs dans les différents projets dans le même espace de travail? Il semblerait défaut si plusieurs projets dans le même espace de travail ne peut pas réellement interagir les uns avec les autres.
Merci,
Graham.
Vous devez vous connecter pour publier un commentaire.
Je viens de mettre un projet en place, à peu près comme vous le décrivez dans la version 3, par la création d'un nouvel espace de travail et en faisant glisser les deux Xcode projet dans ce, imbriqués, comme illustré.
Vous pouvez supprimer le frère de projet si vous l'avez déjà.
Frapper construire sur ce point et il fonctionne, tout simplement, aussi loin que je peux voir.
J'imagine qu'il est en chemin interne-de la confusion si vous avez deux projets, et je serais enclin à jouer avec les paramètres de localisation dans "Affichage"->"Utilitaires"->"Inspecteur de Fichiers" et de voir quel effet cela a.
Une autre chose à essayer est de définir les chemins dans Xcode "Préférences..."->"Arbres" et se référer à eux de cette façon, comme décrit ici: Facile, Code Modulaire de Partage entre les Applications de l'iPhone: les Bibliothèques Statiques et de la Croix-des Références de Projet
HTH. Andy W.
J'ai réussi à obtenir des dépendances entre les projets dans un espace de travail pour travailler comme je l'ai décrit ici: http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/.
Malheureusement je ne peux pas trouver un moyen d'obtenir Xcode pour découvrir les dépendances implicites ou l'index tout en le construire comme annoncé. J'ai trouvé une solution de contournement à deux, mais je suis en espérant que les moins de configuration manuelle sera nécessaire que Xcode 4 mûrit.
J'allais poser la même question, pensant que ma propre solution ne pouvait pas être de droite. Mais je ne le vois pas mentionné ici, et il ne semble pas fonctionner. Clairement XCode 4 est un travail en cours. 🙂
J'ai un espace de travail avec deux projets: une bibliothèque statique et une application qui utilise la bibliothèque. Les projets sont frères et sœurs. Chaque projet a son propre mécanisme, et chaque système est réglé pour ne construire qu'une seule cible. En d'autres termes, j'ai ajouté deux projets pour l'espace de travail et c'est tout.
Pour ajouter la bibliothèque statique comme une dépendance de l'app, je viens de faire glisser le libsomething.un produit à partir de la bibliothèque de projet (Project Navigator) dans le "Lien Binaire avec les Bibliothèques" de la liste de l'application cible. C'est tout. Maintenant, quand je build de l'application du projet de bibliothèque est construite d'abord et ensuite reliés. Fait intéressant, lorsque je modifie l'application de la méthode à utiliser une configuration différente (par exemple, la Libération au lieu de Débogage), la bibliothèque est construit en utilisant la même configuration.
De sorte qu'il fonctionne, et il y a clairement un certain automatique de la vérification de la dépendance qui se passe ici. Mais il se sent mal. Puis de nouveau, le modal régime rédacteur/gestionnaire et le manque d'un objet espace de travail dans le navigateur de projets... je n'aurais jamais pensé dire ça, mais l'INTERFACE utilisateur de Visual Studio (bleh) est beaucoup plus claire.
Mon pare-balles solution pour ce faire :
Créer "Par Debug-Release /Par l'Architecture" paramètres dans les Paramètres de construction dans le projet Principal (pas la lib), d'inclure des
../MyLibProject/build/Debug-iphoneos
ou
../MyLibProject/build/Release-iphonesimulator
ou
etc..
selon la configuration (vous pouvez créer ce type de configuration en cliquant sur le + à côté de Debug ou Release et choisissez "Tout le Simulateur iOS SDK" ou "tout iOS SDK".
Vous avez besoin de le faire pour les deux "en-Tête de Chemin de Recherche" (dans le cas où votre bibliothèque de copie des en-têtes des fichiers, ce qui est plus que probable) ET pour la "Bibliothèque des Chemins de Recherche". Ce qui signifie que pour chaque paramètre, vous allez probablement finir par 4 chemins (debug sim , debug ios, version sim, version ios).
Que serait-assurez-vous que la configuration de ces deux projets de match.
Maintenant, à l'auto-compiler la lib, c'est de créer la dépendance, vous pouvez utiliser le bouton "Phase de construction -> Lien vers Binaire Avec les Bibliothèques -> + -> sélectionnez l' .un fichier" conseils donnés ci-dessus.
C'est la seule façon que j'ai réussi à avoir quelque chose qui se construit et un lien correct pour chaque environnement xcode 4.5
Remarque : j'ai même ajouté l'-lmyLib drapeau "d'autres drapeaux de l'éditeur de liens", mais je ne suis pas sûr que ce soit vraiment nécessaire
J'ai eu un certain succès avec la création de cadre-comme les bibliothèques statiques, si ce n'est pas une solution parfaite.
Voir Xcode guide de l'utilisateur: Xcode Concepts -> Xcode espace de travail sous Projets dans un espace de travail Partager un Répertoire de construction'.
Tous les projets dans un seul espace de travail de partager un répertoire de construction. Les dépendances sont découverts automatiquement et de construire si nécessaire: