iOS:"包含非模块化标题"用libxml

时间:2015-04-25 12:23:28

标签: ios swift frameworks header libxml2

我试图建立自己的框架' VBL'使用基于libxml.dylib的TouchXML

框架构建正常,但每当我尝试在任何项目中使用它时,我都会收到以下错误:

"Include of non-modular header inside framework module VBL.CXMLNode"

那是因为在我的框架内的头文件CXMLNode.h中,我必须包含libxml,如下所示:

#include <libxml/tree.h>

将Build Settings中的以下属性设置为YES是否安全?

allow non-modular included in framework modules

但是这对Swift无效,所以还有其他建议吗?

1 个答案:

答案 0 :(得分:4)

如果可以的话,您可以尝试隐藏私有标头或.m文件中的#include <libxml/tree.h>

您也可以尝试创建一个带有libxml根头的module.modulemap文件来欺骗swift编译器:

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

然后将文件放在文件夹中,例如-module / module.modulemap-。

完成后,您应该在目标import paths的{​​{1}}部分的swift compiler search path部分和目标的build setting中将其关联起来:

header search path

然后在您的代码中,您可以使用$(SRCROOT)/module