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

module.modulemap

framework module Communication {
  umbrella header "Communication.h"

  export *
  module * { export * }
}

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

但是其他两行代码的含义是什么。
  export *
  module * { export * }

如果有什么主意这行导出?

最佳答案

用于ObjC的模块映射(.modulemap)
[ObjC Module]
[Custom .modulemap]
关于LLVM Modules and Module Map LanguageModulemap公开外部二进制文件的 C头文件。它是模块和标题之间的桥梁。 Modulemap有助于转换#include, #import -> @import,因为它在模块名称和内部头之间具有映射。此外,modulemap有助于创建独立的其他模块和子模块。 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

设置
  • 创建库时,应手动创建和设置它
  • 创建框架时,它会自动设置为

  • 即使您创建Swift框架,Xcode也会自动创建modulemap
    [Mixing Objective-C and Swift in the same Application]

    10-01 16:01