Vapor Xcode 项目中的两个几乎相同的目标

Posted

技术标签:

【中文标题】Vapor Xcode 项目中的两个几乎相同的目标【英文标题】:Two almost identical targets in Vapor Xcode project 【发布时间】:2020-01-08 19:34:59 【问题描述】:

我想配置 Package.swift 以便一个目标成为另一个目标的扩展,它们都应该从一个文件夹共享相同的代码,但对于“扩展”版本,还有一个额外的子文件夹。但是我尝试使用path 的配置失败并出现“重叠源”错误。那么,我怎样才能使两个目标具有相同的源文件夹?

.target(name: "App", dependencies: [ "Vapor" ... ], exclude: [ "Subfolder" ])
.target(name: "Extended", dependencies: [ "Vapor", ... ], path: "./Sources/App")

swift build ... error: target 'Extended' has sources overlapping sources...

【问题讨论】:

【参考方案1】:

SwiftPM 严格要求一个目标拥有文件。所以你需要为你的文件建立一个合适的依赖链。

在这种情况下,听起来ExtendedApp 添加了更多功能。如果是这样,您希望拥有App 目前所有的东西。然后让 Extended 依赖于 App 并构建它独有的所有东西。

这允许 1 个目标拥有源文件并允许 Extended 使用这些文件的一个实现。

【讨论】:

以上是关于Vapor Xcode 项目中的两个几乎相同的目标的主要内容,如果未能解决你的问题,请参考以下文章