2009-08-18 21 views
5

Tengo un problema al hacer que XCode se ocupe de una estructura de archivos particular que estoy usando o que deseo usar.XCode include paths

Tengo un conjunto de archivos de la siguiente forma ...

 

Library 
    Headers 
     Library 
     Package1 
      Header1.h 
      Header2.h 
      HeaderN.h 
     Package2 
      Header1.h 
      Header2.h 
      HeaderN.h 
     PackageN 
      Header1.h 
      Header2.h 
      HeaderN.h 
    Source 
     Package1 
     Source1.m 
     Source2.m 
     SourceN.m 
     Package2 
     Source1.m 
     Source2.m 
     SourceN.m 
     Package3 
     Source1.m 
     Source2.m 
     SourceN.m 

El modelo incluyen lo que quiero para el código fuera de esta biblioteca es ...

#import "Library/Package/Header.h" 

quiero señalar XCode en Library/Headers pero no en las carpetas internas. Cuando agrego este árbol al proyecto, XCode parece hacer rutas de inclusión implícitas a cada nodo en el árbol.

código

cliente dentro del proyecto pero fuera de este árbol puede hacer esto ...

#import "Header.h" 

en lugar de ...

#import "Library/Package/Header.h" 

Me parece que no puede encontrar una manera de dissallow la forma no calificada.

Cualquier ayuda sería apreciada.

Gracias, -Roman

Respuesta

1

Si se incluyen las cabeceras de los archivos del proyecto XCode continuación encontrará siempre sin cualificación camino, como usted ha descubierto. La mejor solución es eliminar los encabezados del proyecto y especificar "Biblioteca/Cabeceras" como ruta de búsqueda de encabezado en la configuración de su proyecto. Los encabezados no se mostrarán en su proyecto, pero tampoco serán encontrados implícitamente por XCode durante la compilación; El código del cliente deberá especificar la ruta completa fuera de "Biblioteca/Encabezados" para llegar al archivo de encabezado que desea.

+0

Ya veo. Eso es una pena cuando estoy creando la biblioteca y la aplicación al mismo tiempo. Supongo que siempre podría dividirlo en su propio proyecto. Intenté hacer un objetivo de biblioteca dentro del mismo proyecto, pero eso tampoco cambia las rutas implícitas. –

+4

Encontré que hay una manera de tener los encabezados en su proyecto para facilitar la edición, pero que el proyecto no los haya encontrado. Solo importe los encabezados como referencias de carpeta (azul en lugar de amarillo en xcode). –

+0

+1 útil; ¡Gracias! – fbrereto

6

Estás corriendo contra el comportamiento de Xcode que construye un mapa de cabecera plana. Puede deshabilitar esto agregando la configuración de compilación:

HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT=NO 

a las configuraciones de su proyecto.