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 项目中的两个几乎相同的目标的主要内容,如果未能解决你的问题,请参考以下文章

Vapor 不适用于 xcode 9 和 swift 4

在MacOS上创建一个 hello Vapor 后台项目

Vapor - 尝试手动设置启动项目

一次上传中的多个 Xcode 目标

Xcode7 - 等高乘数约束导致冲突约束

国内首个完整的 Swift 服务端开源项目及详解 - 基于 Vapor 3 框架