I have created one framework named Communication
, inside framework container there is one module.modulemap
file.
module.modulemap<
[History]
Modular Framework
contains .modulemap
file in the next path
module_name.framework/Modules/module_name.modulemap
As for Naming my rule is
ProductName -> Product Module Name -> <name>.modulemap -> framework module <name>
When you create a library you should create and setup it manually[Custom modulemap], when you create a framework Xcode generates its automatically if Build Settings -> Defines Module -> YES
.
When you create your own .modulemap
file you have to update a path in Build Settings -> Module Map File
Lets take a look at the example:
Note: I use explicit module
to show that Xcode will generate errors
//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 *
}