Agregar la ruta de búsqueda del encabezado del sistema a Xcode

(Publicando esta pregunta para fines de referencia, responderé inmediatamente)

¿Cómo agregar rutas de búsqueda de encabezado a Xcode? Especialmente cuando se incluye con esta syntax:

include  
  1. Agregar ruta global a todos los proyectos, como los encabezados del sistema.
  2. Agregar ruta solo a un proyecto específico.

Tenemos dos opciones.

  1. Mira Preferencias-> Ubicaciones -> “Á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 la configuración de comstackción en la información del proyecto. "${SRCROOT}" aquí sin recursión. Esta configuración funciona bien para la mayoría de los proyectos.

Acerca de la 2da opción:

Xcode usa Clang que tiene un conjunto de comandos compatible con GCC. GCC tiene una opción -Idir que agrega rutas de búsqueda de encabezado del sistema. Y esta opción es accesible a través de 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á.

Sin embargo, algunos usuarios de OS X (como yo) pueden poner sus proyectos en camino, incluidos los espacios en blanco que deben escaparse . Puede escaparse como /Users/my/work/a\ project\ with\ space si lo ingresa manualmente. También puede "${SRCROOT}" con comillas para usar variables de entorno como "${SRCROOT}" .

O solo usa . 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 el documento de referencia .

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

Haga un seguimiento de la respuesta de Eonil relacionada con la configuración del nivel del proyecto. Con el objective seleccionado y la pestaña Configuración de comstackció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.

Para usar citas solo para completar.

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

Si no es recursivo, elimine el /**

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 se agregó la carpeta usando la opción Create groups for any added folder , los encabezados se recogieron automáticamente.