3

我有一个具有以下结构的 Package.swift 文件

var package = Package(
  name: "MyProject",
  targets: [
    Target(name: "MyProject")
  ],
  dependencies: [],
  exclude: ["Exclude"]
)

#if DEBUG
  package.dependencies.append(Package.Dependency.Package(url: "Dependency-One.git", majorVersion: 0, minor: 0))
#else
  package.dependencies.append(Package.Dependency.Package(url: "Dependency-Two.git", majorVersion: 0, minor: 0))
#endif

当我使用以下任何一种方式构建它时:

swift build
swift build -c release
swift build -c debug
swift build -c RELEASE
swift build -c DEBUG

它仍然总是下载 Dependency-Two.git。如果我在上述所有内容前面加上

rm -rf .build/ && rm -rf Packages/

所以我不认为这是因为它重用了一些缓存。有可能做我打算在这里做的吗?

4

2 回答 2

2

仍然不可用。我的解决方法是创建多个 Package.swift 文件,命名为,并在构建时Package-DEBUG.swift将相应的脚本复制到其中。Package.swift

这是一个非常愚蠢的解决方法,SPM 开发人员确实需要实现命令行标志。

于 2021-07-20T19:24:27.637 回答
1

这是设计使然。清单不打算用于以这种方式声明条件行为,但不幸的是,对于您正在尝试做的事情,支持这种方式的机制例如,包括PackageDescription用于在每个配置中声明您想要的内容的额外 API)尚未设计。

我建议您在https://bugs.swift.org上提交此功能的增强请求。

于 2016-10-17T07:07:20.947 回答