J'essaie d'ajouter une dépendance à un Swift local dans mon projet Xcode. (Je ne veux pas ajouter de dépendance à l'aide d'une URL de fichier file://me/dev/app/package
car cela ne peut pas être partagé avec d'autres environnements)
J'ai essayé de glisser-déposer le package sur la cible. Cela crée une référence au package dans le projet que j'ai pu ajouter dans la phase de construction "Link Binary With Libraries", mais la bibliothèque est toujours introuvable.
No such module 'Analytics'
Ma configuration d'origine
Après glisser-déposer
et voici ma configuration de package:
// Swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "Analytics",
products: [
.library(name: "Analytics", targets: ["Analytics"]),
],
dependencies: [
.package(path: "../SomeOtherPackage"),
],
targets: [
.target(name: "Analytics", dependencies: [
"SomeOtherPackage",
]),
]
)
J'ai également inclus le package dans les binaires liés cibles et/ou les ressources de bundle et/ou les sources compilées en vain:
J'ai lu cette longue discussion qui ne semble pas être concluant.
Voici un exemple simple de ce que j'essaie: https://github.com/gsabran/SPM_Xcode_test
Voici littéralement ce que je fais et ça fonctionne ... Xcode 11.2
I. Préparer le colis
Fichier> Nouveau> Swift Package> Sélectionner un dossier vide (ou créer un nouveau)> Entrer le nom de la bibliothèque (MyLibrary)
Ici, dans le projet, trouvez MyLibrary.Swift et rendez la structure et la variable publiques, donc il y a une exportation à utiliser dans l'application (j'ai fait une constante statique et un UT fixe)
Créer> OK> Fermer le projet
II. Préparer le projet
Fichier> Nouveau> Projet> iOS> Application vue unique> Entrez le nom (MyApp)> Suivant> Sélectionnez le même dossier que ci-dessus (c'est par défaut)> Créer
Construire> OK
Dans le Finder, faites glisser le dossier MyLibrary juste en dessous du nom du projet dans Xcode Project Navigator
Construire> OK
Cliquez sur l'icône du projet MyApp dans Project Navigator> Sélectionnez la cible de l'application MyApp> section Frameworks, Libraries,… cliquez sur +> Dans la section supérieure de l'espace de travail, sélectionnez MyLibrary> Ajouter
Nettoyer> Construire> OK
Ouvrez ContentView.Swift> tapez import MyLibrary
(la saisie semi-automatique le voit déjà) Remplacer "Bonjour, monde" par "(MyLibrary.text)"
Créer et exécuter> OK
C'est tout.
Pour vérifier le chemin relatif utilisé, ouvrez project.pbxproj dans TextEdit, voici une capture d'écran
Mise à jour:
Note1 - J'ai considéré un certain retard dans la résolution du paquet après le nettoyage, donc pendant une certaine période de temps, 1-2 minutes ici, La génération échoue exactement avec l'erreur signalée, mais après ce délai, il est visible que l'index a redémarré et que la génération suivante a réussi.
Note2 - L'ajout d'un deuxième package dépendant dans le graphique (MyApp> MyLibrary> AnotherLibrary) est le même.