Comme je l'ai fait remarquer ci-dessus, il semble être a current limitation with the Swift Package Manager. Il ne prend actuellement pas en charge l'ajout des options de compilation appropriées, telles que celles nécessaires pour prendre en charge les blocs en tant qu'entrées de fonctions GCD (-Xcc -fblocks
).
En attendant, vous pouvez éviter le gestionnaire de paquets Swift et compiler vos fichiers directement en utilisant swiftc, avec les options appropriées. Un exemple est fourni par Sheffler dans their test repository:
swiftc -v -o gcd4 Sources/main.swift -I .build/debug -j8 -Onone -g -Xcc -fblocks -Xcc -F-module-map=Packages/CDispatch-1.0.0/module.modulemap -I Packages/CDispatch-1.0.0 -I /usr/local/include
Les -I
options tirer dans vos cartes de module pour libdispatch, afin d'ajuster ceux match où vous avez réellement placé ces répertoires de modules du système.
Quelle est la carte du module que vous utilisez pour insérer libdispatch dans Swift? Utilisez-vous le gestionnaire de paquets? –
J'utilise le module officiel: https://github.com/apple/swift-corelibs-libdispatch oui, le premier bloc de code fonctionne. 'import Dispatch' et' dispatch_queue_create' fonctionnent. – zig1375
Cela semble lié à ce problème: https://bugs.swift.org/browse/SR-397 où les appels de fonctions libdispatch qui ont besoin de blocs ne sont pas trouvés. Il semble que le gestionnaire de paquets Swift doit être en mesure de prendre en charge les indicateurs de compilation personnalisés pour les modules pour que cela fonctionne. –