2013-04-14 9 views
14

Questo è il punto. Ho creato un sottoprogetto (libreria statica). La biblioteca si compila bene. Nessun errore Quando includo questa libreria all'interno di un progetto e importa un'intestazione da quella libreria sul progetto, la libreria non riesce a compilare perché non riesce a trovare un percorso che appartiene a se stesso.Percorso della biblioteca statica da incubo dall'inferno

Dopo aver seguito una serie di tutorial sul web su come creare una libreria statica e incorporarla in un progetto, non so quale sia quella corretta, perché ho provato tutti e tutti i tentativi falliti e alcuni differiscono .

Questo è come la libreria è impostato:


libreria statica

impostazioni di generazione:

  1. cartella intestazione Pubblica percorso di ricerca path = $(BUILT_PRODUCTS_DIR)
  2. Intestazione = $(SRCROOT)(ricorsiva)

fasi di creazione

copiare i file = 1 file, myLibrary.h che è praticamente vuoto (creato da Xcode quando ho usato il modello di libreria statica per avviare la biblioteca.

senza aggiungere copia HEADERS fase


PROGETTO PRINCIPALE

impostazioni di generazione

  1. Header percorso di ricerca = vuoti
  2. intestazione User Percorso di ricerca = $(BUILT_PRODUCTS_DIR)(ricorsive)
  3. Sempre percorsi utente search = YES

fasi di creazione

  1. Sì, myLibrary.a è sulle dipendenze bersaglio

Cosa mi stupisce è th nella libreria compila bene solo ma quando viene inserito in un progetto, non riesce a trovare un'intestazione che appartiene alla propria libreria.

NOTA: Ho anche provato a creare una fase di intestazioni di copia sulla libreria rendendo pubblico tutto il .h su quella libreria, ma non è riuscito.

Questo è un esempio di un errore:

/Users/mike/Library/Developer/Xcode/DerivedData/MyApp-dnaimaovscreasadhmvgttwjnabc/Build/Products/Debug-iphoneos/include/myLibrary/ccTypes.h:39:9: 
fatal error: 'Platforms/CCGL.h' file not found 
#import "Platforms/CCGL.h" 

ho perso due giorni cercando di risolvere questo incubo.

qualche pensiero?

ho caricato un progetto di esempio per here e here

+0

Aggiungere la fase di compilazione 'Script di esecuzione 'da eseguire prima della fase di errore, selezionare' Mostra le variabili ambientali nel registro di costruzione', avviare il costruisci e controlla i percorsi su "Log Navigator". –

+0

e lo script è vuoto? Solo quello? In questo modo non mostra nulla di più di ciò che è stato già mostrato su Log Navigator. – SpaceDog

+0

Ho caricato un progetto di esempio qui: https://mega.co.nz/#!mBQhiRQS!Mz0wRh9wdhbKsW_KxE5F8iL2Q11gocuHlAB0ibQOoDo così puoi vedere cosa intendo. – SpaceDog

risposta

2

Dopo quasi 5 giorni di un incubo cercando di risolvere che, finalmente ho trovato questo tutorial: http://www.youtube.com/watch?v=XUhLETxgcoE

Questa è l'unica soluzione che ha funzionato per me. Il più semplice e il migliore.

Grazie per tutti quelli che cercano di risolvere questo problema.

3

(Non abbastanza rep per inviare commenti ...)

Hai provato tra cui in particolare la directory piattaforme nel percorso di ricerca di intestazione ? Presumibilmente, Platforms si trova nella directory source, non in $ (BUILT_PRODUCTS_DIR), quindi potrebbe non essere cercato nelle impostazioni correnti.

+0

hai provato il progetto di esempio che ho caricato? Vedi l'ultimo paragrafo della mia domanda. Grazie. – SpaceDog

+0

@RubberDuck Credo che la sua idea sia la stessa di mia: aggiungere il corretto percorso di ricerca delle intestazioni. Si potrebbe anche giocare con le impostazioni di 'Build Locations' per ottenere i file build di libs e il progetto principale sulla stessa directory dei root products. –

+0

BTW, ho provato la tua risposta e sfortunatamente non funziona per me. Sto per rinunciare a costruire una libreria statica su Xcode. È un altro peccato per Apple che Xcode sia così male. Grazie per i tuoi sforzi. – SpaceDog

3

Per quanto riguarda lo script visualizzare Env variabili, ecco come lo faccio (immagini aperte presso la nuova scheda per una migliore scalabilità):

  • script di aggiunta manichino di shell

enter image description here

  • Osservato il suo output su Log Navigator

enter image description here

enter image description here

enter image description here


Come si può vedere, BUILT_PRODUCTS_DIR non ha intestazioni copiate dalla libreria. O mettere le intestazioni ci manualmente (fortemente sconsigliato) o aggiungere percorso di ricerca della posizione che si sa le intestazioni devono essere a:

enter image description here enter image description here

Ora, come ci sono stati due intestazioni cocos2d.h e MyStaticLibrary.h, cocos2d.h successo era importato anche se avrà una dipendenza aggiuntiva.

Il percorso ../MyStaticLibrary/build/$(BUILD_STYLE)-$(PLATFORM_NAME) avrà anche (in modo ricorsivo) intestazioni pubbliche della libreria.

+0

Grazie. Ci proverò più tardi. A proposito, Apple deve scherzare con gli sviluppatori. – SpaceDog

+0

@RubberDuck Perché, hai seguito qualche guida da developer.apple.com e non funzionava? Immagino che sia successo a causa della mancanza di documentazione da parte di cocos2d o di qualsiasi altra cosa volessi usare, Xcode fa abbastanza bene il suo lavoro. –

+0

Io non la penso così. Xcode 4 è un pezzo di merda. Si blocca più volte per gli stupidi motivi, come la rimozione di un file di immagine che un progetto sta usando eliminandolo tramite finder. Sì, ho seguito la guida di Apple e anche circa 10 guide di altri siti sul web. Il problema non è con Cocos. Xcode deve trovare qualsiasi percorso di qualsiasi cosa compili che viene importata nel progetto. È come importare un'immagine su un editor di testo, vedere quell'immagine lì, inserirla sul testo, formattare tutto ok e quando vuoi stampare il documento l'editor ti dice che l'immagine non può essere trovata. – SpaceDog

12

Dopo aver scaricato il progetto di esempio, l'ho fatto funzionare in pochi minuti apportando le seguenti modifiche.

In primo luogo, è necessario aggiungere una voce per Impostazioni costruire il MyProject del bersaglio sotto l'intestazione dei percorsi di ricerca, in modo che i file come HelloWorldLayer.h, che #import "cocos2d.h", sanno dove trovare quel file.

Sotto la Header Search Paths, sono entrato ../MyStaticLibrary/MyStaticLibrary/libs/** come mostrato nell'immagine qui sotto:

enter image description here

che ha risolto il problema della incapacità del preprocessore per trovare i file di origine necessari dal MyStaticLibrary, per la MyProject progetto, ma dopo la compilazione, ho ricevuto un errore sui simboli mancanti. Avevo bisogno di aggiungere il costruito libMyStaticLibrary.a alla fase Link Binary With Libraries come mostrato nell'immagine qui sotto:

enter image description here

Dopo di che, il progetto compila bene.

0

Si prega di provare questo ...

step1: tasto destro del mouse sul 'projectName.xcodeproj' (libreria statica) Scelga 'Get Info' e copiare il percorso completo da (Generale-> dove)

Step2 : Incolla il percorso completo a "Percorsi di ricerca intestazione" per il progetto principale (Entrambi gli obiettivi e Progetto)

Problemi correlati