I have an Objective-C library that imports another Objective-C library I’ve built. I’m trying to support Swift Package Manager in them, even though they’re Objective-C, because they can still be useful from Swift. The first package creates an extension on
UIDevice, so it needs to link with UIKit. I can get this to work by adding the following to my
target declaration in the first library’s
linkerSettings: [ .linkedFramework("UIKit") ]
This works fine and the second library can happily import it. However, I also support watchOS in the second library, so if I change the first library’s target to the following, it no longer builds:
linkerSettings: [ .linkedFramework("UIKit", .when(platforms: [.iOS, .tvOS])), .linkedFramework("WatchKit", .when(platforms: [.watchOS])) ]
Now I get errors in Xcode about missing symbols from UIKit. If I try to remove the
.when parts from the
.linkedFramework invocations, I get an error in Xcode because WatchKit is not available.
Is this a supported configuration, or is this a bug in the linker settings?