【问题标题】:What is export * in module.modulemap file inside each framework?每个框架内的 module.modulemap 文件中的 export * 是什么?
【发布时间】:2018-04-12 15:48:45
【问题描述】:

我创建了一个名为Communication 的框架,在框架容器内有一个module.modulemap 文件。

module.modulemap

framework module Communication {
  umbrella header "Communication.h"

  export *
  module * { export * }
}

我可以理解该模块需要伞形标头才能将其公开给包含应用程序/目标。

但是另外两行代码是什么意思。

  export *
  module * { export * }

如果有人知道这行输出的是什么?

【问题讨论】:

标签: ios iphone swift frameworks swift4


【解决方案1】:

Objective-C 和 Swift 的 Objective-C 模块映射(.modulemap)

Objective-C 语言为 Objective-C 和 Swift 语言公开 API 思想 .modulemap

[ObjC Module]

[Custom .modulemap]

大约是LLVM Modules and Module Map LanguageModulemap 公开了 外部 二进制文件的 C 头文件。它是模块和标头之间的桥梁。 Modulemap 有助于转换#include, #import -> @import,因为它内部有模块名称和标头之间的映射。 modulemap 还有助于创建独立的 additional 模块和子模块。 Modulemap 可以包含很多模块(只有一个必须与产品名称同名)和很多子模块

//Objective-C exposes API thought .modulemap for Objective-C and Swift

.h.m uses .h.m = Objective-C consumer, Objective-C producer = .modulemap
.swift uses .h.m = Swift consumer, Objective-C producer = .modulemap

包含.modulemap 的框架称为Modular Framework。路径:

module_name.framework/Modules/module_name.modulemap

设置

  • 当您创建库[Example] 时,您应该手动创建和设置它
  • 当您创建框架[Example] 时,它会自动设置

即使你创建了 Swift 框架 Xcode 也会自动创建 modulemap

[Mixing Objective-C and Swift in the same Application]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 2016-03-22
    • 1970-01-01
    • 2012-09-19
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多