2015-11-13 9 views
15

Sto cercando di creare un framework per il mio progetto. Nel mio framework ho aggiunto il percorso dei miei file di intestazione a target> Impostazioni di creazione> percorso di ricerca intestazione. Dopo di che ho aggiunto questo framework al mio progetto per Fasi di compilazione> Link binario con librerie.Xcode non trova il file di intestazione

Quando voglio importare il file di intestazione che ho incluso nel mio framework, ottengo un errore .h non trovato. È quello che sto cercando di fare? O mi sto perdendo qualcosa?

Ho creato un quadro del genere;

Nuovo progetto aperto come iOS> Framework & Libreria> Cocoa Touch Framework Non ho aggiunto alcuna classe, ho solo aggiunto il percorso di ricerca dell'intestazione e il percorso di ricerca della libreria e le bandiere del linker. Non credo di aver fatto un errore in questa parte perché lo facciamo in ogni progetto, ma la prima volta lo faccio per il framework. Quindi ho premuto run e ottenuto il mio framework dai prodotti.

Ho aperto il mio progetto e aggiunto il framework Fasi di compilazione> Link binario con librerie. Sono in grado di importare file di intestazione di framework come #import <myframework/framework.h> Dopo questo ho aggiunto framework anche Generale> Binari incorporati. Tutto sembra normale ma non posso aggiungere intestazioni al mio progetto che ho incluso nel mio framework con il percorso di ricerca dell'intestazione. Devo usare il percorso di ricerca dell'intestazione perché ci sono tonnellate di intestazioni, non posso aggiungerle tutte al mio Xcode.

+1

Non è necessario impostare il percorso di ricerca dell'intestazione se l'intestazione si trova all'interno di un framework, vero? È necessario assegnare un nome all'intestazione correttamente nell'istruzione '# import', tuttavia (' #import '). – trojanfoe

+0

Ci sono molte intestazioni in un altro percorso. Devo sfortunatamente usare il percorso di ricerca dell'intestazione. Tipo di regola aziendale. Grazie per il tuo commento. –

+1

Puoi descrivere più dettagliatamente come hai creato esattamente il tuo framework e come lo hai importato esattamente? – arturdev

risposta

18

assicurarsi voi tutti intestazione pubblico contenuto nella sezione Pubblico altro trascinare e rilasciare i file .h di pubblico enter image description here

+0

Nessun file di intestazione su Xcode, rimangono in una cartella diversa e io mostro solo il percorso da essi dal percorso di ricerca dell'intestazione. Ci sono molti file header e non posso trascinarli tutti in Xcode. –

+1

devi trascinare tutto il file di intestazione nella sezione pubblica del progetto Framework dopo che devi solo includere il tuo framework –

+0

Huzzah! Cosi 'semplice! Grazie! –

2

sembrare tutto normale, ma non posso aggiungere intestazioni al mio progetto che ho inserito nel mio quadro con l'intestazione percorso di ricerca

Sembra come se vi aspettate tutte le intestazioni che si possono trovare nel percorso specificato dal intestazione percorso di ricerca entreranno a far parte del vostro quadro, in modo che se c'è un colpo di testa di nome SomeHeader.h nel percorso di ricerca, esso sarà integrato nel framework e sarete in grado di importare in progetti dei clienti come:

#import <MyFramework/SomeHeader.h> 

Ma non è il caso a tutti. Se si desidera che il framework fornisca SomeHeader.h, è necessario aggiungere tale file al progetto e, come già rilevato da Meghs Dhameliya, è necessario specificare SomeHeader.h nella parte delle intestazioni pubbliche della fase di generazione delle intestazioni. In questo modo Xcode copia il file di intestazione nel framework in modo che i client del framework possano importare il file di intestazione. Non è chiaro che sia quello che vuoi veramente, anche se ... nei commenti hai scritto:

C'è un sacco di intestazioni in un altro percorso. Devo sfortunatamente usare il percorso di ricerca dell'intestazione. Tipo di regola aziendale.

Quindi sembra che tutti i progetti nella propria azienda specificano lo stesso percorso di ricerca dell'intestazione in modo che possano accedere a questi file di intestazione. Se questo è vero, non c'è motivo per cui i progetti debbano essere inviati a #import dal tuo framework, ma in quel caso non è chiaro quale sia il vero problema. Oppure, forse stai creando il framework in modo che i progetti client possano ottenere le intestazioni dal tuo framework invece di dover fare riferimento al percorso di ricerca dell'intestazione. In tal caso, dovrai aggiungere tali intestazioni al progetto e specificarle come descritto sopra.

+0

Caleb, sì, abbiamo molte intestazioni e librerie e quando le condividiamo con i client, confondono e di solito dimenticano di aggiungere il percorso di ricerca dell'intestazione o le bandiere del linker. Quindi voglio creare un framework che abbia tutto questo e condivida solo il framework con il cliente. Sto cercando di capire se è possibile o meno. Ancora una volta, tutte le nostre intestazioni sono nello stesso percorso specificato. Dobbiamo usarli con il percorso di ricerca dell'intestazione da lì. Alla fine di tutto ho capito che non è possibile dal percorso di ricerca dell'intestazione. –

+0

@yucelbayram È possibile utilizzare il percorso di ricerca dell'intestazione se è necessario "# importare" quelle intestazioni nei file * your * source, in modo che il compilatore abbia tutte le definizioni, ecc. Che è necessario compilare. Dal momento che si desidera includere effettivamente il file di intestazione stesso nel framework in modo che sia disponibile per i progetti client su "# import", sì, è necessario aggiungerlo al progetto. – Caleb