【问题标题】:Suppress warnings from dependencies with Swift Package Manager使用 Swift 包管理器抑制来自依赖项的警告
【发布时间】:2018-04-30 04:30:57
【问题描述】:

假设我有一个像下面这样的Package.swift,并且来自依赖项的SomePackageswift build 期间会产生警告。

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "my-app",
    dependencies: [
        .package(url: "https://some-package.git", .upToNextMajor(from: "1.0"))
    ],
    targets: [
        .target(name: "Run", dependencies: ["SomePackage"]
    ]
)

如何抑制依赖项发出的警告,但保留来自我的代码的警告?

【问题讨论】:

标签: swift swift-package-manager


【解决方案1】:

使用 Swift 工具版本 5,您可以在包文件中定义编译器标志(请参阅 https://docs.swift.org/package-manager/PackageDescription/PackageDescription.html#swiftsetting)。这是Package.swift 的示例,它在构建期间抑制编译器警告:

// swift-tools-version:5.0

import PackageDescription

let package = Package(
    name: "Antlr4",
    products: [
        .library(
            name: "Antlr4",
            targets: ["Antlr4"]),
    ],
    targets: [
        .target(
            name: "Antlr4",
            dependencies: [],
            swiftSettings: [
                .unsafeFlags(["-suppress-warnings"]),
            ]),
        .testTarget(
            name: "Antlr4Tests",
            dependencies: ["Antlr4"]),
    ]
)

要仅在外部代码中禁止显示警告,您应该将代码分成两个包。

【讨论】:

    【解决方案2】:

    如果您使用的是 Xcode 10 项目文件:

    1. 在 Xcode 中点击项目文件
    2. 选择依赖的目标
    3. 转到构建设置
    4. 搜索 Swift 编译器 - 警告策略
    5. 适当设置禁止警告标志

    【讨论】:

    • 在我看来这种方式是最正确和最简单的。
    • 问题是如何抑制对 dependencies 的警告。所以,答案不是抑制 all 警告。
    【解决方案3】:

    对于 Objective-C 模块,您可以使用以下命令禁用所有警告:

    cSettings: [
       .unsafeFlags(["-w"])
    ]
    

    【讨论】:

      【解决方案4】:

      我不知道如何仅抑制依赖项警告,但可以通过传递此选项在构建期间抑制所有警告:-Xswiftc -suppress-warnings。调用看起来像

      swift build -Xswiftc -suppress-warnings
      

      【讨论】:

      • 中途解决方案,例如获取所有警告或不获取任何警告。谢谢。
      • 问题是如何抑制对 dependencies 的警告。所以,答案不是抑制 all 警告。
      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 2017-05-15
      • 2021-03-21
      • 2018-09-23
      • 2020-08-11
      • 2022-08-12
      • 2023-04-04
      相关资源
      最近更新 更多