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

26

假设我有一个像下面这样的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"]
    ]
)

如何抑制依赖项中产生的警告,同时保留来自我的代码的警告?


我正在使用基于CocoaPods的xcodeproj工具的自定义脚本,该工具在生成我的Xcode项目后运行。请参阅:https://gist.github.com/siemensikkema/57ef1ce3340e32b72dc59e44bc37b477 我对其进行了调整,以便针对生成我不关心的警告的框架进行例外处理(在我的情况下是在使用Vapor 2时)。 - siemensikkema
4个回答

7

使用 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"]),
    ]
)

为了只在外部代码中抑制警告,您应该将代码拆分为两个包。

尝试了这个,但是出现了“找到1个未处理的文件;明确声明它们为资源或从目标中排除”的错误。 XCode将这些警告分组为未分类,这可能是它无法工作的原因吗? - Kwnstantinos Nikoloutsos

4
对于Objective-C模块,您可以使用以下代码禁用所有警告:
cSettings: [
   .unsafeFlags(["-w"])
]

-3

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

swift build -Xswiftc -suppress-warnings

部分解决方案,例如获取所有警告或不获取任何警告。谢谢。 - Dannie P
7
问题是如何抑制依赖项上的警告。因此,答案不是抑制所有警告。 - William Grand
其实这正是我在寻找的东西。xodeubild的中文对应是什么呢? - undefined

-5

如果您正在使用 Xcode 10 项目文件:

  1. 在 Xcode 中单击项目文件
  2. 选择您的依赖目标
  3. 进入构建设置
  4. 搜索 Swift 编译器 - 警告策略
  5. 适当地设置 抑制警告 标志

在我看来,这种方式是最正确和最容易的。 - João Vitor
34
问题是如何抑制有关“依赖项”的警告。因此,答案不是抑制所有警告。 - William Grand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接