如何在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
- 带有libxml的Swift框架
- https://spin.atomicobject.com/2015/02/23/c-libraries-swift/
- 在Swift框架中导入CommonCrypto
- https://github.com/onmyway133/Reindeer
为了在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;
在你的代码中。