使用Swift Package Manager抑制来自依赖项的警告

Dan*_*e P 6 swift swift-package-manager

假设我在Package.swift下面有这样的,并且SomePackage从依赖关系中产生警告swift 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"]
    ]
)
Run Code Online (Sandbox Code Playgroud)

如何从依赖项中抑制这些警告,但保留那些来自我的代码的警告?

cle*_*ens 8

使用 Swift Tools 版本 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"]),
    ]
)
Run Code Online (Sandbox Code Playgroud)

要仅在外来代码中抑制警告,您应该将代码分成两个包。


小智 5

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

cSettings: [
   .unsafeFlags(["-w"])
]
Run Code Online (Sandbox Code Playgroud)


小智 -3

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

swift build -Xswiftc -suppress-warnings
Run Code Online (Sandbox Code Playgroud)

  • 问题是如何抑制_依赖项_上的警告。所以,答案不是禁止所有警告。 (8认同)