2011-02-01 13 views
5

Tengo un proyecto con varios objetivos, cada uno de los cuales crea versiones bastante similares de la aplicación pero con diferentes activos y listas de imágenes. Para plists/images está bien, pero utilizo los frameworks ShareKit y Appirater que tienen archivos de encabezado con #defines para su configuración. Para cada versión, creo que es necesario importar una versión diferente de este archivo de encabezado, ya que la configuración es diferente para cada aplicación creada por cada objetivo.Xcode - Importación de diferentes archivos de encabezado con el mismo nombre basado en Target

Así que se dirigen a un SHConfig.h tiene y el destino B tiene un SHConfig.h DIFERENTE

pude editar el código fuente para estos marcos para importar diferentes cabeceras basado en el objetivo, pero eso sería complicado cuando vengo para actualizar los marcos.

¿Existe alguna forma mejor de importar diferentes archivos de encabezado (con el mismo nombre) en función del objetivo?

Respuesta

5

Suponiendo que están en directorios diferentes, establezca las Rutas de búsqueda de encabezado en cada destino para poner primero el directorio correcto.

Es posible que desee establecerlo en algo como $(SRCROOT)/foo:$(HEADER_SEARCH_PATHS), aunque no estoy seguro de si es necesario.

+1

Durante dos archivos comunes para tener el mismo nombre, tienen que estar en diferentes directorios. – ughoavgfhw

+1

Gracias Peter, funciona bien. Una alternativa que se sugirió fue crear mi propia SHKConfig.h "maestra" y definir #ifdefs para pasarla a otros archivos. Esto tiene una sobrecarga mínima y una menor dependencia de las herramientas de compilación. Ambas soluciones parecen funcionar. – NeilInglis

+0

Hice exactamente eso y no funciona. Tengo un objetivo que busca el encabezado en la carpeta del otro objetivo. ¿Alguna idea de lo que estoy haciendo mal? – refaelos

0

Lo que encontré útil fue poner el nombre del directorio común en la ruta de búsqueda del encabezado, y luego usar un #import diferente. Mi estructura de directorio era Common/Views/v1 y Common/Views/v2. Quería la v1 para un objetivo y la v2 para otro.

En mi caso, la ruta de búsqueda utilicé en la cabecera de rutas de búsqueda fue:

$(SRCROOT)/../Common/ 

Entonces, utilicé:

#import <Views/v2/ActivityIndicator.h> 

En el objetivo de que necesitaba la segunda versión (esto encuentra $ (SRCROOT) /../ Common/Views/v2/ActivityIndicator.h).

Curiosamente, el otro objetivo (el primero que creé) está bien sin especificar la ruta completa. Es decir,

#import "ActivityIndicator.h" 

trabaja para encontrar $ (SRCROOT) /..//views/V1/ActivityIndicator.h

Cuestiones relacionadas