XCode SPM - package [package] 的目标 [target] 需要的 [product] 未找到。

4
我在我的项目中使用SPM,并希望集成Texture。我的项目使用SPM分为不同的模块,我只想在其中一个模块中使用Texture。
问题是Texture不支持SPM。我从这个PR中进行了fork以支持SPM。我已经成功地将Texture集成到了我的项目中,但无法使用它。
我的Package.swift文件:
let targets: [Target] = [
    .target(name: "MyTarget", dependencies: ["Texture"]),
]

let package = Package(
    name: "MyPackage",
    platforms: [.iOS(.v14), .macOS(.v10_15)],
    products: targets.filter { !$0.isTest }.map { .library(name: $0.name, targets: [$0.name]) },
    dependencies: [
        .package(name: "Texture", url: "https://github.com/bejeri4/Texture.git", .branch("spm")),
    ],
    targets: targets)
)

当我将 Texture 添加为本地软件包的依赖项时,出现以下错误:

软件包 'MyPackage' 的目标 'MyTarget' 要求依赖产品 'Texture',但该产品未找到。

1个回答

6

我认为在您的目标依赖项中,您需要指定 Texture 包的产品,而不是仅仅是包名称。这些产品包括 AsyncDisplayKit 和 AsyncDisplayKitIGListKit:

因此,您应该修改目标以使用其中一个产品,如下所示:

let asyncDisplayKit = Target.product(name: "AsyncDisplayKit", package: "Texture")

let targets: [Target] = [
    .target(name: "MyTarget", dependencies: [asyncDisplayKit]),
]

1
谢谢你的回答,你救了我的一天!按照你的建议后,我遇到了新的错误:“目标‘MyTarget’中的依赖项‘AsyncDisplayKit’需要显式声明;在目标依赖项中引用包‘.product(name: "AsyncDisplayKit", package: "MyTarget")’。” 为了解决这个问题,我必须执行以下操作: “let asyncDisplayKit = Target.product(name: "AsyncDisplayKit", package: "Texture")”,然后在MyTarget中使用它。 你能否更新一下答案? - Levan Karanadze
但它已经添加到了Package.swift的headerSearchPath中(https://github.com/bejeri4/Texture/blob/spm/Package.swift)。你在“预处理器定义”中是什么意思?你能详细解释一下我应该做什么吗? - Levan Karanadze
尝试在sharedDefines中添加一个额外的定义,如下所示:.define("AS_USE_VIDEO", to: "1")。 - Christos Koninis
看起来这些文件是Objective-C++,你能否尝试为每个目标添加相同的cxxSettings设置?(复制 cSettings参数并将名称更改为cSettings->cxxSettings) - Christos Koninis
1
我终于修好了。ASAvailability.h中禁用了AS_USE_VIDEOS - 我不知道为什么。我在那里启用了它,现在它可以工作了。 - Levan Karanadze
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接