ios 在每个框架中,module.modulemap文件中的export * 是什么?

szqfcxe2  于 2023-02-14  发布在  iOS
关注(0)|答案(1)|浏览(130)

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

模块.模块Map

framework module Communication {
  umbrella header "Communication.h"

  export *
  module * { export * }
}

我可以理解模块需要伞形头来将其暴露给包含的应用程序/目标。
但其他两行代码的含义是什么。

export *
  module * { export * }

如果有人知道这条线出口什么?

eufgjt7s

eufgjt7s1#

    • 用于Objective-C和Swift的Objective-C模块Map(. modulemap)**

Objective-C语言通过. modulemap为Objective-C和Swift语言提供API
ObjC Module(https://stackoverflow.com/a/59213796/4770877)
Custom .modulemap(https://stackoverflow.com/a/57665560/4770877)
这是关于LLVM模块和模块Map语言。Modulemap外部二进制文件公开C头文件。它是模块和头文件之间的桥梁。Modulemap有助于转换#include, #import -> @import,因为它有一个模块名和头文件之间的Map。此外,modulemap有助于创建独立的附加**模块和子模块。Modulemap可以包含许多模块(只有一个必须与产品名称同名)和许多子模块

//Objective-C exposes API through .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(https://stackoverflow.com/a/59215981/4770877)时,应手动创建和设置它
  • 当您创建框架Example(https://stackoverflow.com/a/59216086/4770877)时,它会自动设置

即使创建Swift框架,Xcode也会自动创建模块Map
Mixing Objective-C and Swift in the same Application(https://stackoverflow.com/a/59217109/4770877)

相关问题