我创建了一个名为Communication
的框架,在框架容器中有一个module.modulemap
文件。
module.modulemap
framework module Communication {
umbrella header "Communication.h"
export *
module * { export * }
}
我可以理解该模块需要伞头将其暴露给包含应用程序/目标。
但是其他两行代码的含义是什么。
export *
module * { export * }
如果有人知道这行出口是什么?
答案 0 :(得分:0)
Modular Framework
在下一个路径中包含.modulemap
个文件
module_name.framework/Modules/module_name.modulemap
至于命名,我的规则是
ProductName -> Product Module Name -> <name>.modulemap -> framework module <name>
create a library应该[Custom modulemap]手动创建和设置,create a framework如果Build Settings -> Defines Module -> YES
,Xcode会自动生成它。
创建自己的.modulemap
文件时,您必须更新Build Settings -> Module Map File
中的路径
让我们看一下示例:
注意:我使用explicit module
来表明Xcode会产生错误
//ClassA.h
#import "ClassAA.h"
//ClassB.h
//ClassAA.h
//Module.h
#import "ClassA.h"
#import "ClassB.h"
//Module.modulemap
framework module Module {
//Expose all imports from Module.h for Module module recursively
// import Module - you can use ClassA, ClassB, ClassAA
umbrella header "Module.h"
//explicit module * { }
// 1. `module` works only with `umbrella`
// 2. Generates a submodule for every header inside Module.h recursively
// import Module.ClassA, import Module.ClassB, import Module.ClassC
//explicit module * { export * }
//export all imports from <submodule_name>.h for <submodule_name> module
// import Module.ClassA - you can use ClassA, ClassAA (ClassAA was added)
explicit module * { export * }
//export all imports from Module.h for Module module
// import Module.ClassA - you can use ClassA, ClassAA, ClassB(ClassB was added)
export *
}