我创建了一个名为
Communication
的框架。在框架的容器内,有一个 module.modulemap
文件,其中包含以下内容:
framework module Communication {
umbrella header "Communication.h"
export *
module * { export * }
}
我可以理解该模块声明了一个伞形标头以将其公开给包含的应用程序/目标。
另外两行代码是什么意思?
export *
module * { export * }
这些线路输出什么?
Objective-C 和 Swift 的 Objective-C 模块映射(.modulemap)
Objective-C 语言通过 Objective-C 和 Swift 语言的 .modulemap 公开 API
它是关于LLVM 模块和模块映射语言。
Modulemap
公开 external 二进制文件的 C 头文件。它是模块和标头之间的桥梁。 Modulemap 有助于转换 #include, #import -> @import
,因为它内部有模块名称和标头之间的映射。 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
设置创建库时