2011-02-01 3 views
5

Ho un progetto con più destinazioni, ognuna delle quali crea versioni dell'app piuttosto simili ma con risorse e elenchi di immagini diversi. Per plists/immagini va bene, ma io uso i framework ShareKit e Appirater che hanno i file header con #defines per la loro configurazione. Per ogni versione credo necessario importare una versione diversa di questo file di intestazione, poiché la configurazione è diversa per ogni app creata da ciascun target.Xcode - Importazione di un file di intestazione diverso con lo stesso nome in base a Target

Quindi indirizzare A ha SHConfig.h e la destinazione B ha uno SHConfig.h DIVERSO

ho potuto modificare la fonte di questi quadri di importare le intestazioni diverse in base alla destinazione, ma che sarebbe disordinato quando vengo per aggiornare i framework.

Esiste un modo migliore per importare diversi file di intestazione (con lo stesso nome) in base alla destinazione?

risposta

5

Supponendo che si trovino in directory diverse, impostare i Percorsi di ricerca dell'intestazione in ciascun target per inserire prima la directory corretta.

Si consiglia di impostarlo su qualcosa come $(SRCROOT)/foo:$(HEADER_SEARCH_PATHS), anche se non sono sicuro se è necessario.

+1

Per due file comuni per avere lo stesso nome, essi devono essere in diverse directory. – ughoavgfhw

+1

Grazie Peter, funziona bene. Un'alternativa suggerita è stata quella di creare il mio "master" SHKConfig.h e definire #ifdefs in modo da passare ad altri file. Questo ha un sovraccarico minimo e una minore dipendenza dagli strumenti di costruzione. Entrambe le soluzioni sembrano funzionare. – NeilInglis

+0

Ho fatto esattamente questo e non funziona. Ho un obiettivo che cerca l'intestazione nella cartella dell'altra destinazione. Qualche idea su cosa sto facendo male? – refaelos

0

Ciò che ho trovato utile era inserire il nome della directory comune nel percorso di ricerca dell'intestazione, e quindi usare una diversa #import. La mia struttura di directory era Common/Views/v1 e Common/Views/v2. Volevo la v1 per un obiettivo e la v2 per un altro.

Nel mio caso, il percorso di ricerca che ho usato in intestazione dei percorsi di ricerca era:

$(SRCROOT)/../Common/ 

Poi, ho usato:

#import <Views/v2/ActivityIndicator.h> 

Nel target che aveva bisogno la seconda versione (questo trova $ (SRCROOT) /../ Comune/Vista/v2/ActivityIndicator.h).

Stranamente, l'altro obiettivo (il primo che ho creato) va bene senza specificare il percorso completo. Vale a dire,

#import "ActivityIndicator.h" 

lavora per trovare $ (SRCROOT) /..//Vista/v1/ActivityIndicator.h