【问题标题】:Xcode: LLVM 7.0: Disable warning "Umbrella header for module does not include header"Xcode:LLVM 7.0:禁用警告“模块的伞头不包括头”
【发布时间】:2015-10-09 02:23:41
【问题描述】:

为了让我的 Objective-C 框架在我的 Swift cocoa touch 框架中成功链接,我必须使用 this unpretty workaround,这涉及将所有框架头文件作为公共头文件导入项目。

我完全不需要它们都出现在我的伞形标题中,所以我想以某种方式删除生成的一堆警告。 (“模块 'Foo' 的伞形标头不包括标头”)。我在构建设置中检查了 LLVM 警告设置,但找不到它。

【问题讨论】:

    标签: xcode swift llvm compiler-warnings


    【解决方案1】:

    如果您从“编译 Swift 源文件”▸“预编译桥接头”构建步骤(也标记为 PrecompileSwiftBridgingHeader)中收到此警告,请按以下方式抑制它:

    1. 为您的项目找到构建设置。
    2. 搜索“其他 Swift 标志”。
    3. -Xcc-Wno-incomplete-umbrella 添加到“其他 Swift 标志”(按此顺序)。

    【讨论】:

    • 这正是我所需要的。谢谢!
    • 非常感谢!
    • 你能解释一下-Xcc在做什么吗?
    • -Xcc 告诉 swift 驱动程序将以下参数传递给 C 编译器。
    【解决方案2】:

    警告标志是-Wincomplete-umbrella,所以要抑制,传递-Wno-incomplete-umbrella

    【讨论】:

      【解决方案3】:

      尝试将标头角色从公共设置为项目,并确保您不会从自己的标头中引用任何第三方标头 - 仅来自实现。

      任何具有公共角色的标头都必须导入到伞形标头中。

      【讨论】:

      • 目的实际上是链接第三方框架,将所有第三方框架标头作为公共导入的解决方法可以避免“包含非模块化标头”链接器错误,但您不希望公开这些标头,这就是为什么您只想忽略警告而不将它们包含在伞形标头中的原因。
      猜你喜欢
      • 2015-11-22
      • 2015-12-31
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多