【问题标题】:no umbrella header found for target没有找到目标的伞头
【发布时间】:2016-03-18 12:22:48
【问题描述】:

有关于堆栈溢出的答案,但没有一个对我有用。

这是一个 Swift 2.0 项目,我使用的是 Xcode 7.2.1

重现问题的步骤

  1. 创建单一视图项目
  2. 在项目导航器中转到目标
  3. 添加一个名为 Common 的框架模块
  4. 添加另一个名为 Logger 的框架模块
  5. 编译

你会看到一个警告。

Warning: no umbrella header found for target 'Logger', module map will not be generated

请指教

测试项目链接 -> https://www.dropbox.com/s/cvgjls70ielnriy/Test.zip?dl=0

【问题讨论】:

标签: ios xcode swift


【解决方案1】:

所以我了解了构建阶段并在 Logger 的标题下,我在它的公共接口中添加了 logger.h。

这是一个错误还是我不知道 Xcode 没有自动为第三个目标/模块添加任何标题,它确实为第二个添加了。

我为测试添加了另一个目标,并且包含了头文件,因此如果添加第三个目标/模块(框架),就会出现此问题。

希望对某人有所帮助。

【讨论】:

  • 完全正确。我看到的是,按照您的指示,我们最终得到的是 Common 框架在其 Build Phases 标头中同时具有 Common.hLogger.h ,而 Logger框架没有标题。另一种查看方式:选择 Logger.h 并在文件检查器中查看 Target Membership:它是错误目标的成员。
  • 这是一个非常棒的错误,您已经给出了重现它的精彩说明。我希望您向 Apple 提交错误报告。祝贺你的好工作。不幸的是,我只能为你投票两次(一次是问题,一次是答案)。 :)
  • 感谢您在屏幕截图上提供了更多的信息,我也想知道为什么 logger.h 会被添加到 Common 目标中。我也提交了错误报告。
  • 也感谢您通过文件检查器解决此问题
【解决方案2】:

我为测试添加了另一个目标,并且包含了头文件,因此如果添加第三个目标/模块(框架),就会出现此问题。

实际上没有必要这样做。只需选择 Logger.h 并使用 File Inspector:

如您所见,它的 Target Membership 错误;它已被添加到 Common 目标。只需取消选中 Common 并选中 Logger。请务必将弹出菜单设置为公开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多