Problem with Swift Package Manager - module map should be inside "Include" directory

Viewed 3182

This is my Package.swift file:

let package = Package(
    name: "MyProject",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
        .package(url: "https://github.com/AlwaysRightInstitute/cows.git",
                 from: "1.0.0"),
        .package(url: "https://github.com/NozeIO/MicroExpress.git",
                 .branch("branches/swift-nio-lib"))
    ],
    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 which this package depends on.
        .target(name: "Demo",
                dependencies: [
                    "cows", "MicroExpress"
            ],
                path: ".")

    ]
)

I've already initialised the Package correctly (I think) and the git repos are fetched (using "Swift package fetch/resolve")

Now i'm trying to "Swift build" but I get the follosing error:

'MyTarget' /Users/nimrodshai/Documents/MyProject: error: package has unsupported layout; modulemap '/Users/nimrodshai/Documents/MyProject/Pods/FirebaseCrash/Frameworks/FirebaseCrash.framework/Modules/module.modulemap' should be inside the 'include' directory

Anyone has any idea how do I solve this?

Edit: I've trying uninstalling everything from the Pod file (including firebase) and then build. This is what i'm getting:

'Toky' /Users/nimrodshai/Documents/TOKY-TOY: error: target at '/Users/nimrodshai/Documents/TOKY-TOY' contains mixed language source files; feature not supported
1 Answers

Try using the documentation found here for publicHeaderPaths for targets. It says:

publicHeadersPath: This property defines the path to the directory containing public headers of a C target. This path is relative to the target path and default value of this property is include. Only valid for C family library targets.

You should be able to set that to the path to your module.modulemap and it will then be happy.

Related