我正在尝试创建一个混合的ObjC-Swift框架 . 但是我试图为我的Swift文件制作一个私有模块,我失去了很多头发 .
基本上我现在有一个module.modulemap,其中包含以下内容:
module MyCore { //Adding 'framework' before module is giving me an "Umbrella not found"-error :/
umbrella header "MyCore.h"
export *
module * { export * }
explicit module MyCorePrivate {
header "MyCore_PrivateUmbrella.h"
export *
}
}
MyCore_PrivateUmbrella.h 导入我想私下向我的Swift代码公开的所有头文件 . 其背后的原因只是在模块中包含1个 Headers 然后所有要显示的 Headers 更容易(因为您需要包含 Headers 的特定路径...) .
我的构建设置如下:
DEFINES_MODULE :是的
PRODUCT_MODULE_NAME :MyCore
CLANG_ENABLE_MODULES :是的
SWIFT_OBJC_INTERFACE_HEADER_NAME :MyCore-Swift.h
SWIFT_INCLUDE_PATHS : module.modulemap 目录的路径
最后但并非最不重要; ALWAYS_SEARCH_USER_PATHS 设置为NO
在我的Swift文件中,我使用 import MyCore.MyCorePrivate 导入模块 . 这按预期工作,我可以使用Objective-C中的代码 .
构建项目会给我一个这样的错误(黑条只隐藏项目名称和文件路径):
现在单击错误会将我带到生成的 MyCore-Swift.h ,其中 @import MyCore.MyCorePrivate 看似错误 .
我不知道为什么这是错的,我也不知道如何解决这个问题 . 特别是因为它是由XCode生成的文件 .
有谁知道这里发生了什么?