Wie ich oben bemerkte, scheint dies zu sei a current limitation with the Swift Package Manager. Es unterstützt derzeit nicht das Hinzufügen der entsprechenden Kompilierungszeitoptionen, z. B. diejenigen, die benötigt werden, um Blöcke als Eingaben für GCD-Funktionen zu unterstützen (-Xcc -fblocks
).
In der Zwischenzeit können Sie den Swift Package Manager umgehen und Ihre Dateien direkt mit swiftc mit den entsprechenden Optionen kompilieren. Ein Beispiel dafür ist Sheffler in their test repository bereitgestellt:
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
Die -I
Optionen in Ihrem Modul Karten für libdispatch ziehen, so dass diejenigen einstellen, an dem Sie tatsächlich diese Systemmodul Verzeichnisse platziert haben.
Was ist die Modulkarte, die Sie verwenden, um libdispatch zu Swift zu ziehen? Verwenden Sie den Paketmanager? –
Ich benutze offizielle Modul: https://github.com/apple/swift-corelibs-libdispatch ja, erste Code-Block funktioniert. 'import Dispatch' und' dispatch_queue_create' funktionieren. – zig1375
Das klingt nach diesem Problem: https://bugs.swift.org/browse/SR-397 wo alle libdispatch-Funktionsaufrufe, die Blöcke benötigen, nicht gefunden werden. Es klingt wie der Swift Package Manager in der Lage sein muss, benutzerdefinierte Compiler-Flags für Module zu unterstützen, damit dies funktioniert. –