I have a Package.swift in my project like:
import PackageDescription
let package = Package(
name: "ProjectName",
dependencies: [
.Package(url: "https://github.com/example/repo.git", majorVersion: 0)
]
)
When I run swift build
I get errors like…
/project/Packages/WebViewController.swift:1:8: error: no such module 'UIKit'
import UIKit
^
Where should I tell the swift package manager where to find UIKit?
You have to change some swiftc options to build the project against proper sdk and target
swift build -Xswiftc "-sdk" -Xswiftc "`xcrun --sdk iphonesimulator --show-sdk-path`" -Xswiftc "-target" -Xswiftc "x86_64-apple-ios13.0-simulator"
Currently Swift Package Manager has full Xcode support. I was able to get around this error by specifying in my Package.swift manifest that the platform was iOS.
let package = Package( name: "MyPackage", platforms: [ .iOS(.v8) ],
Then you can open the Package.swift file in Xcode and it will just work.
You should select an iOS-based target to make it available:
If you leave it selecting macOS (by default), you will get the error.
if you want your package to be available only for specific platforms (for example only for iOS), you should specify the platform in the package.swift
file:
let package = Package(
name: "MyLibrary",
platforms: [
.iOS(.v10)
],
products: [
,,,
If you need your framework to be available on multiple platforms, don't forget to check the availability of the imported framework like:
#if canImport(UIKit)
import UIKit
#endif
The Swift Package Manager builds executables to run on OS X (or Linux); UIKit is a framework in iOS and won't be accessible.
It may be iOS, tvOS and others become accessible as Swift Package Manager evolves.
On Dec 4, 2015, at 5:39 PM, Daniel Dunbar (@apple.com) wrote:
...
Right, now we only compile for the host platform (OS X or Linux, currently). Among other things, we currently have no knowledge (or options to choose) what SDK or architecture you are targeting. We also have no mechanisms for specifying what platforms targets are compatible with in the manifest.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With