【问题标题】:How to resolve Swift Package Manager target overlapping sources error如何解决 Swift Package Manager 目标重叠源错误
【发布时间】:2020-02-05 01:06:58
【问题描述】:

我有一个 GitHub 存储库,它是一个 Objective-C 项目,它定义了多个目标(每个目标操作系统一个:macOS、iOS、tvOS 等)。这些目标共享项目的大部分源代码文件。

我正在尝试将 SPM 支持添加到项目中,并在 Package.swift 文件中定义匹配目标,其中源 path 指的是包含跨目标共享的源代码文件的同一文件夹。

当我将此 SPM-“启用”的项目/包添加到尝试通过 SPM 将其用作依赖项的测试项目时,我收到一条错误消息,指出依赖包中的第二个目标与另一个目标具有重叠的源(第一个使用相同的共享源代码文件)。

关于如何解决问题的任何想法?我会假设我对共享源代码文件的多目标配置不是那么独特......

【问题讨论】:

    标签: objective-c xcode swift-package-manager


    【解决方案1】:

    我终于弄清楚问题出在哪里,应该有什么解决办法。

    我的错误是像 Xcode 一样看待 SPM 目标。实际上,SPM 目标本质上是一个包含源代码文件的命名文件夹,这些文件需要构建以生产一个或多个产品。他们不假设关于如何构建的配方定义(Xcode 目标的方式)。但是,依赖于给定 SPM 包的代码库确实会应用其 Xcode 目标来构建自身和依赖项(在构建自己的代码库之前)。 SPM 目标与目标设备完全无关。

    因此,当我尝试将所有 Xcode 目标映射为相似的 SPM 目标(同时从多个 SPM 目标引用相同的源代码文件)时,从 SPM 的角度来看这是错误的。

    正确的解决方案是在单个代码库位置(路径)上定义单个 SPM 目标,然后一切顺利。

    这是一个很好的视频,它很好地解释了 SPM 概念,并随后引导我找到了可行的解决方案: Creating Swift Packages

    【讨论】:

    猜你喜欢
    • 2022-01-16
    • 2021-04-23
    • 1970-01-01
    • 2017-02-08
    • 2023-02-10
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多