简体   繁体   中英

No such module in a Swift Package using Xcode - package listed in dependencies

I create a blank template package:

> swift package init --name Temp
> open Package.swift

Xcode Version 13.2.1 (13C100) opens the package.

I add a dependency to the package.

dependencies: [
    .package(url: "https://github.com/johnsundell/publish.git", from: "0.7.0")
],

Xcode > Product > Build succeeds at this point.

I edit Temp/Sources/Temp/Temp.swift to insert the first line the package that is defined in dependencies .

import Publish

A build now generates the following error: …/Temp/Sources/Temp/Temp.swift:1:8: error: no such module 'Publish' .

I feel certain this is an Apple bug. Or I could be missing something.

There are several posts about this problem when there is an xcodeproj and the additional structure that provides. Some of them hint at workarounds that help some people.

Has anyone seen this and/or know of how to resolve it?

Apple's Creating a Standalone Swift Package with Xcode document doesn't provide any insight.

thanks for the chatter in the comments, @Larme & @koen, it helped

The issue was user error (and/or a documentation lapse). Living on the (bleeding) edge.

Sometimes updates from changes are slow or require a clean or a relaunch.

Xcode auto-generates Schemes from the targets defined in your package. My build was targeting MyTarget .

Two things were missing:

  1. name: "Publish" was not included in the package dependency - it's needed so you can reference it below (or maybe this can be derived, it's hard to tell because of Xcode refresh issues) , and
  2. a reference is needed in the dependencies for each target using the package-dependency, i needed to add dependencies: ["Publish"] in the related target
    dependencies: [
        .package(name: "Publish", url: "https://github.com/johnsundell/publish.git", from: "0.7.0")
    ],
    …
    targets: [
        .target(
            name: "MyTarget",
            dependencies: ["Publish"]),
    ]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM