What is export * in module.modulemap file inside each framework?

前端 未结 1 1026
余生分开走
余生分开走 2020-12-10 07:20

I have created one framework named Communication, inside framework container there is one module.modulemap file.

module.modulemap<

相关标签:
1条回答
  • 2020-12-10 07:41

    [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 *
    }
    
    0 讨论(0)
提交回复
热议问题