我的swift cocoa touch框架包含子项目,它是一个Objective-C静态库。 (WhirlyGlobe-MaplyComponent)。
现在,我希望将它的类暴露给我的快速代码
如果我只是将#include "MaplyComponent.h"
添加到伞标题中,即使在构建设置中将Include of non-modular header inside framework module
设置为Allow Non-modular Includes In The Framework Modules
,我也会得到YES
。
另一种方式:Some post
展示如何创建一个module.map
文件,以便将标题包装到Swift模块中,我做了完全相同的事情:
module MaplyComponent [system] {
header "/Users/hurden/Developer/repositories/OSMViewer/OSMKit/WhirlyGlobe/WhirlyGlobeSrc/WhirlyGlobe-MaplyComponent/include/MaplyComponent.h"
export *
}
然后import MaplyComponent
将使一切正常,我可以调用API,运行和测试,但Xcode的SourceKitService将无法解析实际的头 - 没有代码完成,变量类型是<<error-type>>
等等,所以在我看来这不是正确的方式。
有什么建议吗? (肯定应该如何在伞头中导入子项目的标题)
更新
我可以解决链接二进制分发而不是源代码分发的问题。 (但它涉及从框架内部到项目的可怕标头复制。Link to original answer。)