SPM missing ".o" binary file when package only contains resources

Hi guys,

I'm testing some things with SPM and i notice when i create a Package with only Resources (in this case xib's) Xcode gives an error saying:

Build input file cannot be found: '/Users/...../Library/Developer/Xcode/DerivedData/ProjectName-bpomsbxzsqinlpeyceaipkcukueq/Build/Products/Debug-iphonesimulator/XibsModule.o'

If the Swift Package contains a swift file inside "Sources" the error doesn't occurs.
My package:

// swift-tools-version:5.5
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "XibsModule",
    platforms: [.iOS(.v13)],
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "XibsModule",
            targets: ["XibsModule"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "XibsModule",
            dependencies: [],
            resources: [
              .process("Resources"),
            ])
    ]
)

Can anyone confirm this?

Well the error message isn’t very helpful, but you are going to need at least one Swift file anyway. Resources are internal unless you forward access to clients by writing some public method of your own. In the state you have it, your package would just be an impenetrable container that no one use.

Ok that explains some parts. Explains why it works when i put an empty swift file in the package.
So it's not possible to have a package only with resource because of access control defaults.

It probably should be possible, it just isn’t meaningful. It is much like the way you can compile a completely empty .swift file into a “valid” program, but it would be utterly pointless.

If you want, you can file a bug about the confusing error message at bugs.swift.org (for SwiftPM) and/or feedbackassistant.apple.com (for Xcode).

Terms of Service

Privacy Policy

Cookie Policy