如何在Swift中使用libxml?

我尝试使用这种新语言用我的一些旧代码开始一个新项目,我在我的旧项目中使用了Libxml2.2,所以xcode在我把代码放入后显示“找不到libxml.h / parse.h文件”我的新项目。 我已经导入了“libxml2.2.dylib”

我已经使用CommonCrypto https://github.com/onmyway133/CommonCrypto.swift,但libxml应该是相同的。 要记住的事情

module.modulemap

阅读http://clang.llvm.org/docs/Modules.html#module-map-language

创建一个名为libxml2的文件夹(在我的例子中,它与我的项目文件位于同一目录下),然后在里面创建一个module.modulemap文件

 module libxml2 { header "/usr/include/libxml2/libxml/tree.h" export * } 

这里我只添加了tree.h ,但您可以根据需要添加更多内容

SWIFT_INCLUDE_PATHS

转到“目标构建设置”,将其添加到“ Import Paths

 ${SRCROOT}/libxml2 

HEADER_SEARCH_PATHS

阅读为什么我收到“找不到libxml / tree.h文件”错误?

转到“目标构建设置”,将其添加到“ Header Search Paths

 $(SDKROOT)/usr/include/libxml2 

有趣的相关post

为了在Xcode 6中使用我的项目,我导航到我的项目的“Build Settings”,并选择了我的目标。 然后我在Build Settings中搜索了“Header Search Paths”,并在调试和发布中添加了以下行:

 $(SDKROOT)/usr/include/libxml2 

如果你将’-lxml2’添加到OTHER_LDFLAGS,我发现你可以省去导入’libxml2.2.dylib’。

您将必须创建一个包含libxml/tree.h标头的自定义module map文件, libxml/tree.h所示:

 module libxml [system] { header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h" export * } 

然后将此文件(module.modulemap)放在文件夹-module中,并将其添加到项目和目标的build settings

你现在可以使用@import libxml; 在你的代码中。