我有使用 KissXML Objective-C 库的 Swift Framework 项目。 KissXML 内部使用 libxml。
当我构建 xcode 项目(Xcode 6 - beta 5)时,出现以下错误:
error: <unknown>:0: error: '/SwiftFramework/SwiftFramework/KissXML/DDXMLNode.h:2: include of non-modular header inside framework module SwiftFramework.DDXMLNode
我见过这个answer讨论公开相关的头文件。我已经这样做了,但我不确定如何解决在 DDXMLNode.h 中导入的此标头的情况,并且它不是我的项目的明确一部分:
#import <libxml/tree.h>
关于如何处理这个问题有什么建议吗?
Note:我在一个仅 Objective-C 的项目上使用 KissXML,它工作得很好(Xcode 5)。
诀窍是创建一个module并将其包含在您的项目中。
要创建模块,您需要创建一个名为的文件,比方说,模块.模块映射它在感兴趣的头文件上导出 API,如下所示:
module libxmlModuleDevice {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h"
export *
}
module libxmlModuleSimulator {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/libxml2/libxml/tree.h"
export *
}
请注意,您需要对模拟器和实际设备执行此操作 - 因此文件上有 2 个条目。
这个文件模块.模块映射可以放置在任何地方。我创建了一个名为modules与 Xcode 的项目文件 (.xcodeproj) 处于同一级别,并将模块.模块映射文件在那里。
然后将包含该文件的目录添加到标头搜索路径 under 构建设置你的 Xcode 项目。
在此示例中,您所要做的就是添加单词modules to the 标头搜索路径因为modules目录与 Xcode 项目文件处于同一级别。这将在内部更新 Xcode 项目变量HEADER_SEARCH_PATHS。就是这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)