我创建了一个名为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 Language。 Modulemap
公开外部二进制文件的 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]