2015-04-25 17 views
7

Sto cercando di costruire il mio quadro 'VBL' che utilizza TouchXML che si basa su libxml.dylibiOS: "Includere di intestazione non modulare" con libxml

Il quadro sta costruendo bene, ma ogni volta che 'm cercando di utilizzarlo in qualsiasi progetto, ho ottenuto il seguente errore:

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

E questo è precisamente perché nell'intestazione CXMLNode.h dentro il mio quadro, devo includere libxml come segue:

#include <libxml/tree.h> 

È sicuro impostare la seguente proprietà in Impostazioni di compilazione su SÌ?

allow non-modular included in framework modules 

Ma questo non funziona comunque con Swift, quindi altri suggerimenti?

+0

avete fatto risolvi la tua domanda? – Loegic

risposta

4

Se possibile, provare a nascondere #include <libxml/tree.h> in un'intestazione privata o nel file .m.

È anche provare a creare un file module.modulemap con l'intestazione radice libxml all'interno di ingannare la rapida compilatore:

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

Poi posizionare il file all'interno di una cartella, -module/module.modulemap- per esempio.

Una volta che hai fatto che si dovrebbe collegarlo in import paths all'interno della sezione swift compiler search path del target build setting, e del bersaglio header search path:

$(SRCROOT)/module 

Poi nel codice, è possibile utilizzare @import libxml;

+0

grazie a Loegic, funziona, ma come si può aggiornare all'interno di podspec? –

+0

@ios_user, mi dispiace ma non capisco la domanda? Vuoi aggiornare una dipendenza? – Loegic

+0

Intendo dire che modifico il file pod modulemapp per aggiungere l'intestazione modulare mancante all'interno dell'elenco dei pod, ma se desidero lavorare senza modificare manualmente nei pod, piuttosto all'interno del mio file podspec, quando faccio il baccello, non lo faccio funziona sì –