2015-04-25 5 views
7

Ich versuche, meine eigenen Rahmen ‚VBL‘ zu bauen, die TouchXML verwendet, die auf libxml.dylib basiertiOS: „Fügen von nicht-modularen Header“ mit libxml

Der Rahmen fein baut, aber wenn ich bin versucht, es in jedem Projekt zu verwenden, ich folgende Fehlermeldung bekam:

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

Und das ist speziell, weil in Kopf CXMLNode.h in meinem Rahmen, muss ich libxml umfassen wie folgt:

#include <libxml/tree.h> 

Ist es sicher, die folgende Eigenschaft in den Buildeinstellungen auf YES zu setzen?

allow non-modular included in framework modules 

Aber das wird mit Swift sowieso nicht funktionieren, also irgendwelche anderen Vorschläge?

+0

Sie Did Deine Frage lösen? – Loegic

Antwort

4

Sie können versuchen, die #include <libxml/tree.h> in einem privaten Header oder in der .m-Datei zu verbergen, wenn Sie können.

Sie können auch versuchen, eine module.modulemap Datei mit den Libxml root-Header erstellen innerhalb des schnellen Compiler zu täuschen:

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

Dann legen Sie die Datei in einem Ordner, -module/module.modulemap- zum Beispiel.

Sobald Sie getan haben, dass Sie es in import paths im swift compiler search path Abschnitt des Ziel build setting, und das Ziel der header search path verknüpfen sollte:

$(SRCROOT)/module 

Dann in Ihrem Code können Sie verwenden @import libxml;

+0

danke Loegic, es funktioniert, aber wie kann innerhalb podspec aktualisieren? –

+0

@ios_user, tut mir leid, aber ich verstehe die Frage nicht? Sie möchten eine Abhängigkeit aktualisieren? – Loegic

+0

Ich meine, ich bearbeite die Pod-Modulmapp-Datei, um den fehlenden modularen Header in der Liste der Pods hinzuzufügen, aber wenn ich ohne manuelle Bearbeitung in den Pods arbeiten möchte, eher in meiner podspec-Datei, wenn ich pod lint mache, dann don 't arbeiten –