2017-05-24 7 views
1

J'ai construit un projet simple Swift qui produit un outil de ligne de commande macOS et dispose d'une bibliothèque associée personnalisée Swift (.dylib), mais lors de la compilation et de l'exécuter, il y a un certain nombre d'avertissements qui apparaissent de la forme:Lors de la construction d'un outil de ligne de commande Swift avec la bibliothèque Swift associée, pourquoi le Framework est-il intégré?

objc [9532]: La classe _SwiftNativeNSEnumeratorBase est implémentée dans /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/libswiftCore.dylib (0x100cca3f0) et/Users/.. ./Build/Products/Debug/MyTool (0x1003e84c0). Un des deux sera utilisé. Lequel est indéfini.

balayage du MyTool binaire résultant montre qu'il contient cette fonction, donc je présume qu'il a été cuit dans une certaine façon par la liaison statique. Le .dylib s'attend à ce que cela soit présent en tant que bibliothèque partagée, il semble donc que c'est là que la duplication se produit. J'ai essayé de nombreux paramètres au niveau du projet et de la cible, mais aucun ne semble contrôler l'intégration de choses comme le framework principal en tant que bibliothèque statique autre que l'option d'intégration explicite.

Pour les deux cibles Toujours intégrer les bibliothèques rapides est défini sur "Non". Nettoyer et construire produit toujours les avertissements de duplication.

Répondre

0

On dirait qu'il ya quelques choses qui doivent être changées pour résoudre ce:

  • Définir les chemins d'exécution Recherche pour inclure /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx ou l'ensemble de la bibliothèque appropriée. Ceux-ci semblent inclure une version plus récente des bibliothèques Swift que celles présentes dans l'emplacement par défaut.
  • Définissez Lien avec les bibliothèques standard sur "Non".
  • Spécifiez manuellement les bibliothèques à lier dans l'onglet "Général" de la cible de ligne de commande en faisant glisser celles-ci depuis l'emplacement .../usr/lib/swift/macos. Un projet Swift nécessite libswiftCore.dylib.

En raison de liaisons C Il me fallait aussi inclure libc, mais celui par défaut (libc.tbc) suffisaient.