2015-04-25 69 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時,它不會不工作 –