带有 libxml 的 Swift 框架
Posted
技术标签:
【中文标题】带有 libxml 的 Swift 框架【英文标题】:Swift Framework with libxml 【发布时间】:2014-09-30 01:19:36 【问题描述】:我有一个使用 KissXML Objective-C 库的 Swift 框架项目。 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>
对如何处理有什么建议吗?
注意:我在一个仅限 Objective-C 的项目中使用了 KissXML,它运行良好(Xcode 5)。
【问题讨论】:
你的问题解决了吗? 是的。使用如下所述的 module。我现在将答案标记为正确答案。 【参考方案1】:诀窍是创建一个模块并将其包含在您的项目中。
要创建模块,您需要创建一个名为 module.modulemap 的文件,该文件将 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 个条目。
这个文件module.modulemap可以放在任何地方。我在 Xcode 的项目文件 (.xcodeproj) 的同一级别创建了一个名为 modules 的目录,并将 module.modulemap 文件放在那里。
然后将包含此文件的目录添加到 Xcode 项目的 Build Settings 下的 Header Search Path。
在此示例中,您只需将单词 modules 添加到 Header Search Path,因为 modules 目录位于与 Xcode 项目文件相同的级别。这将在内部更新 Xcode 项目变量 HEADER_SEARCH_PATHS。就是这样。
【讨论】:
我尝试了你的解决方案,但我可以让它工作,你能详细说明一下过程吗? 我添加了更多细节尝试一下,让我知道它是怎么回事。干杯。 谢谢@infinite-loop,我按照你说的做了,Xcode 能够找到新模块,但是,在编译阶段,它会抛出一个错误“libXmlModuleDevice”(或其他)不是找到:/ Hhhhmmmm... 你能二次检查文件系统上是否存在这 2 个路径吗?如果不是,请调整它们以指向正确的路径。 我做到了(我赞成答案),我的项目包含两个目标,我必须将它添加到两个构建设置中。谢谢:]【参考方案2】:在xcode6、iphone8.3中,路径为
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk/usr/include/libxml2
*更新: 更简单的方法: $(SDKROOT)/usr/include/libxml2 感谢: iPhone libxml2 not found during build
【讨论】:
以上是关于带有 libxml 的 Swift 框架的主要内容,如果未能解决你的问题,请参考以下文章
PhP 常见安装错误configure error xml2-config not found. please check your libxml2 installation
安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
带有 libxml2 的 Apple Mach-O 链接器警告