2010-08-06 10 views
48

(Publicación de esta cuestión con fines de referencia, voy a responder inmediatamente)sistema de cabecera de Ruta de búsqueda de Xcode

cómo agregar rutas de búsqueda de cabecera a Xcode? Especialmente cuando se incluye con esta sintaxis:

include <myheader.h> 
  1. Adición de ruta a nivel mundial para todos los proyectos como cabeceras de sistema.
  2. Adición de la ruta solo a un proyecto específico.

Respuesta

94

Tenemos dos opciones.

  1. mirada a Preferencias-> Ubicaciones -> "Los árboles Fuente" en la preferencia de Xcode. Una ruta agregada aquí será una ruta a nivel del sistema y estará disponible para ser incluida en todos los proyectos.

  2. Establezca el parámetro HEADER_SEARCH_PATHS en las configuraciones de construcción en la información del proyecto. Agregué "${SRCROOT}" aquí sin recursion. Esta configuración funciona bien para la mayoría de los proyectos.

Sobre segunda opción:

Xcode utiliza Sonido metálico que tiene GCC conjunto de comandos compatibles. GCC has an option -Idir que agrega rutas de búsqueda del encabezado del sistema. Y esta opción es accesible a través del HEADER_SEARCH_PATHS en la configuración de construcción del proyecto Xcode.

Sin embargo, la cadena de ruta añadida a esta configuración no debe contener ningún espacio en blanco, ya que la opción se pasará al comando de shell como está.

Pero, algunos usuarios de OS X (como yo) pueden poner sus proyectos en una ruta incluyendo espacios en blanco que debe escaparse. Puede escapar como /Users/my/work/a\ project\ with\ space si lo ingresa manualmente. También puede evitarlos con comillas para usar variables de entorno como "${SRCROOT}".

O simplemente use . para indicar el directorio actual. Vi este truco en el código fuente de Webkit, pero no estoy seguro de que el directorio actual se establezca en el directorio del proyecto al construirlo.

El ${SRCROOT} es un valor predefinido por Xcode. Esto significa el directorio de origen. Puede encontrar más valores en Reference document.

PS. En realidad, no es necesario utilizar llaves {}. Obtengo el mismo resultado con $SRCROOT. Si conoce la diferencia, hágamelo saber.

+1

Tenga en cuenta también que $ {SRCROOT} es el directorio que contiene el directorio .xcodeproj, * no * el directorio donde Xcode coloca sus archivos de origen (al menos en mi Xcode 4.6.3). Para llegar a mi fuente, tenía que ir un nivel más profundo. –

+3

La diferencia, con o sin llaves, es que con llaves la ruta puede contener espacios en blanco. –

+2

TE ENCANTA EL TRASH DE RETROILUMINACIÓN –

2

Para usar las comillas solo para completarlas.

"/Users/my/work/a project with space"/**

Si no recursiva, quite el /**

+4

Además, asegúrese de usar corchetes para las variables como se muestra arriba, en lugar de la variedad redonda. El último parece causar problemas de análisis con proyectos que tienen espacios. –

10

Seguimiento a la respuesta de Eonil Participa en el proyecto ajustes de nivel. Con el objetivo seleccionado y la pestaña Configuración de compilación seleccionada, es posible que no haya una lista en Rutas de búsqueda para Rutas de búsqueda de encabezado. En este caso, puede cambiar a "Todos" desde "Básico" en la barra de búsqueda y las Rutas de búsqueda de encabezado se mostrarán en la sección Rutas de búsqueda.

3

Aunque esta pregunta tiene una respuesta, la resolví de manera diferente cuando tuve el mismo problema. Tuve este problema cuando copié carpetas con la opción Create Folder references; entonces la solución anterior de agregar la carpeta al build_path funcionó. Pero cuando la carpeta se agregó utilizando la opción Create groups for any added folder, los encabezados se recogieron automáticamente.

Cuestiones relacionadas