swift-package-manager - Swift 包管理器条件编译不尊重标志

标签 swift-package-manager

我有一个具有以下结构的 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/

所以我不认为这是因为它重用了一些缓存。是否可以按照我的意图执行此操作?

最佳答案

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

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

关于swift-package-manager - Swift 包管理器条件编译不尊重标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064198/

相关文章:

Swift 包和相互冲突的依赖项

ios - 我如何重命名swift包

swift - 为 `swift package generate-xcodeproj` 设置 macOS 目标?

Swift套件管理员-没有 list 错误

Swift 包和 `#if canImport(...)` 。它是如何工作的?

Swift 包管理器无法编译通过 Homebrew 安装的 ncurses

swift - Steam 云部署失败 : Sockets Error: Failed trying to connect to http://redis. eu.vapor.cloud:6379

swift - 从 SPM 解析多个 Package.test 测试目标

swift - 我应该将 .swiftpm 添加到 gitignore 吗?

swift - Xcode:在 Xcode 14 中使用包