如何在Swift中使用libxml?

时间:2014-06-19 07:47:57

标签: ios objective-c swift

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

4 个答案:

答案 0 :(得分:9)

我已经使它与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

阅读Why am I getting this "libxml/tree.h file not found" error?

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

$(SDKROOT)/usr/include/libxml2

有趣的相关帖子

答案 1 :(得分:6)

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

$(SDKROOT)/usr/include/libxml2

答案 2 :(得分:2)

我发现你可以省去导入“libxml2.2.dylib&#39;如果你添加&#39; -lxml2&#39;到OTHER_LDFLAGS。

答案 3 :(得分:2)

您必须创建一个包含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;