在Swift框架包装C库中传递C头

在Swift框架包装C库中传递C头,swift,header-files,module-map,Swift,Header Files,Module Map,我正在用纯C源代码在Xcode中构建一个静态库。通过modulemap.modulemap,我可以在Swift和Objective-C中使用该模块,包括一个关键头文件enum.h。看起来是这样的: module CLibMyLibrary { header "CLibMyLibraryModule.h" # <- has all of my C lib's public headers in it. export * } #import <C

我正在用纯C源代码在Xcode中构建一个静态库。通过
modulemap.modulemap
,我可以在Swift和Objective-C中使用该模块,包括一个关键头文件
enum.h
。看起来是这样的:

module CLibMyLibrary {
    header "CLibMyLibraryModule.h"  # <- has all of my C lib's public headers in it.
    export *
}

#import <CLibMyLibrary/enum.h>

此时,它会导致关于导入非模块化头的错误(即使该文件是上述CLibMyLibrary模块的一部分)。因此,我添加了一个额外的“假”模块,该模块仅对该文件进行模块化,如下所示:

module CLibMyLibraryEnum {
    header "enum.h"
    export *
}

现在,在一个应用程序中,我可以简单地
导入MyFramework
,所有
enum.h
符号都可以在Swift中识别。美好的这正是我所期望的

不过,这个假模块让我很困扰。它可能很脆弱,可能不是预期的使用方式

除了在
enum.h
文件中包装数百行定义外,还有没有更好的方法可以传递符号,而不需要单独导入它们?也就是说,仅仅通过导入框架

谢谢