Swift 包管理器条件编译不考虑标志
Swift package manager conditional compile not respecting flags
我有一个具有以下结构的 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/
所以我不认为这是因为它重用了一些缓存。是否可以按照我的意图进行?
这是设计使然。清单不打算用于以这种方式声明条件行为,但不幸的是,对于您要尝试做的事情,支持此 的机制 (例如,包括其他 API从 PackageDescription
声明你想要的每个配置)还没有设计。
我建议您在 https://bugs.swift.org 上提交对此功能的增强请求。
仍然不可用。我的解决方法是创建多个 Package.swift 文件,命名为 Package-DEBUG.swift
并让脚本在构建时将适当的文件复制到 Package.swift
。
这是一个非常愚蠢的解决方法,SPM 开发人员确实需要实施命令行标志。
我有一个具有以下结构的 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/
所以我不认为这是因为它重用了一些缓存。是否可以按照我的意图进行?
这是设计使然。清单不打算用于以这种方式声明条件行为,但不幸的是,对于您要尝试做的事情,支持此 的机制 (例如,包括其他 API从 PackageDescription
声明你想要的每个配置)还没有设计。
我建议您在 https://bugs.swift.org 上提交对此功能的增强请求。
仍然不可用。我的解决方法是创建多个 Package.swift 文件,命名为 Package-DEBUG.swift
并让脚本在构建时将适当的文件复制到 Package.swift
。
这是一个非常愚蠢的解决方法,SPM 开发人员确实需要实施命令行标志。