在多个目标中重用本地 Swift 包



我需要在多个目标中重用本地 Swift 包。它们都是同一个工作区的一部分,看起来像这样

- Workspace
- ProjectA
- TargetA1 depends on PackageA
- TargetA2 depends on PackageA and PackageB
- ProjectB
- TargetB1 depends on PackageA
- ProjectC, etc...
- Modules
- PackageA
- PackageB

包生成产品添加到各个目标General > Frameworks and Libraries依赖项下。现在,当我触发构建时,我得到

Multiple commands produce '.../Modules/PackageA' etc...

这在某种程度上是可以理解的,我希望 Xcode 足够聪明,不会一遍又一遍地构建包,即使,我不明白为什么这首先会导致错误。

对此有合理的解决方案吗?

我不想再次开始创建静态库目标或创建一个单独的存储库,只是为了能够通过包依赖项导入它。

好的,我找到了一个有点令人满意的答案。

首先,防止 SPM 选择库类型本身,并在要共享的包中声明 2 个单独的构建产品:

...
products: [
.library(name: "PackageA", type: .dynamic, targets: ["PackageA"]),
.library(name: "PackageAStatic", type: .static, targets: ["PackageA"])
],
...

一个明确.dynamic,另一个明确.static。现在,根据您要在其中使用此包的目标,链接正确的包(动态或静态)。这似乎为我解决了这个问题。

最新更新