【发布时间】:2014-08-09 16:24:11
【问题描述】:
我尝试使用这种新语言用我的一些旧代码开始一个新项目, 我在旧项目中使用了 Libxml2.2,因此在我将代码放入新项目后,xcode 显示“找不到 libxml.h/parse.h 文件”。 我已经导入了“libxml2.2.dylib”
【问题讨论】:
标签: ios objective-c swift
我尝试使用这种新语言用我的一些旧代码开始一个新项目, 我在旧项目中使用了 Libxml2.2,因此在我将代码放入新项目后,xcode 显示“找不到 libxml.h/parse.h 文件”。 我已经导入了“libxml2.2.dylib”
【问题讨论】:
标签: ios objective-c swift
我已经让它与 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
有趣的相关帖子
【讨论】:
为了在 Xcode 6 中使用我的项目,我导航到我的项目的“构建设置”,并选择了我的目标。然后我在 Build Settings 中搜索了“Header Search Paths”,并在调试和发布中添加了以下行:
$(SDKROOT)/usr/include/libxml2
【讨论】:
我发现如果将“-lxml2”添加到 OTHER_LDFLAGS,则可以省略导入“libxml2.2.dylib”。
【讨论】:
您必须像这样创建一个包含libxml/tree.h 标头的自定义module map 文件:
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)放在一个文件夹中——例如模块——并将它添加到你的项目和目标的build settings。
您现在可以在代码中使用@import libxml;。
【讨论】: