2015-04-25 32 views
7

我试图建立自己的框架“VBL”使用TouchXML这是基于libxml.dylib的iOS:“包括非模块化头的”与libxml的

该框架是建立罚款,但每当我“M试图在任何项目中使用它,我得到了以下错误:

"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一起工作,所以还有其他建议吗?

+0

你有没有解决你的问题? – Loegic

回答

4

如果可以,您可以尝试隐藏#include <libxml/tree.h>私人标题或.m文件。

您也可以尝试创建一个module.modulemap文件与libxml的根头内愚弄迅速编译:

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-例如内。

一旦你这样做,你应该在import paths目标build settingswift compiler search path部分中链接它,并为目标的header search path

$(SRCROOT)/module 

然后在你的代码,你可以使用@import libxml;

+0

感谢Loegic,它的工作原理,但如何更新内部podspec? –

+0

@ios_user,我很抱歉,但我不明白这个问题?你想更新一个依赖? – Loegic

+0

我的意思是我编辑pod modulemapp文件以在pod列表中添加缺少的没有模块化标题,但是如果我希望在pod中手动编辑而不是在podspec文件中进行编辑,那么当我制作pod lint时,它不会不工作 –