Comstack, comstack o archiva problemas con Xcode 4 (y dependencias)

Esta pregunta ha evolucionado en las últimas semanas para cubrir problemas más generales con xcode4 (y actualizar proyectos de xcode s más antiguos).

Sin embargo, muchos de los problemas se pueden resolver siguiendo el mismo conjunto de instrucciones.

Si tiene alguno de los siguientes problemas, pruebe los métodos en la respuesta aceptada:

  • Xcode 4 no puede archivar una aplicación
  • Xcode 4 crea un archivo inutilizable
  • Xcode 4 no crea un .ipa
  • Xcode 4 no se puede comstackr debido a errores del preprocesador
  • Xcode 4 no puede encontrar encabezados
  • El código completo de Xcode 4 no está funcionando
  • Las dependencias del proyecto no comstackrán
  • Agregar una dependencia causa cualquiera de los problemas anteriores

Pregunta original

Título: “archivo de problema léxico o preprocesador no encontrado” en Xcode 4

Tengo un proyecto en Xcode 4 que se comstackrá bien y se ejecutará en el dispositivo y el simulador, pero cuando intente archivar los errores al buscar los archivos de encabezados asociados con una biblioteca estática:

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15: In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23: In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11: In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10: /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1] #import "Merchant.h" ^ 1 error generated. 

Xcode da el error

 lexical or preprocessor issue file not found 

Much Google ha demostrado que muchas personas tienen este problema pero no tienen solución. Alguien tiene una solución o incluso una pista.

Actualización: user header rutas de búsqueda del user header están configuradas en ${BUILT_PRODUCTS_DIR} en todas las configuraciones. Construye bien usando cualquier configuración excepto cuando se archiva.

Actualización 2: Merchant.h es una clase Core Data que se genera automáticamente y, por lo tanto, se encuentra dentro del paquete .xcdatamodeld ; sin embargo, los encabezados se copian en el directorio de encabezados públicos cuando se genera la biblioteca.

Nota: Los pasos a continuación resolverán el 90% de los problemas de archivo de Xcode, sin embargo, de los comentarios se sugiere que intente salir primero de Xcode . Esto puede ahorrarle horas de ajuste de ajuste.

  1. Compruebe que las “rutas del encabezado del usuario” son correctas (agregue “” a las rutas para espacios, tanto en su proyecto como en las dependencias)
  2. Establezca “Buscar siempre rutas de usuario” en SÍ
  3. Cree una llamada de grupo “Encabezados de indización” en su proyecto y arrastre los encabezados a este grupo. NO lo agregue a ningún objective cuando se le solicite. Esto incluye cualquier encabezado dentro de su .xcdatamodeld , tendrá que hacer clic derecho y ver el contenido del paquete para encontrarlos.
  4. Para todas las dependencias, configure “Omitir instalación en “Sí”
  5. Mover cualquier encabezado “Público” en Fases de comstackción a “Proyecto”
  6. Establezca la configuración de comstackción “Directorio de instalación” en su destino en $(LOCAL_APPS_DIR)
  7. Cambie la configuración de comstackción de destino “escanear todos los archivos de origen para incluir” en SÍ. ( enlace )
  8. Con las versiones más recientes de Xcode (> 4.2) es posible que desee leer esta pregunta relacionada con los espacios de trabajo.
  9. Elimine manualmente los archivos project.xcworkspace de todos los proyectos a los que se hace referencia

Tuve el mismo problema en XCode 4: “Problema léxico o de preprocesador MyFile.h no encontrado”. Sin embargo, MyFile.m no era una biblioteca estática, solo una clase estándar. Y MyFile.m y MyFile.h se incluyeron correctamente y se indexaron en el proyecto.

Entonces … dejé XCode y el simulador, luego los reinicié y el problema desapareció.

Descubrí que el problema desapareció cuando cambié la configuración de comstackción de destino “escanear todos los archivos fuente para incluir” de no a sí.

Pude resolver este problema sin ningún cambio en ninguna de las configuraciones de comstackción simplemente copiando los archivos .h en el directorio del proyecto en el buscador. NO los agregué al proyecto en absoluto. Solo tenerlos en el directorio del sistema de archivos del proyecto parecía ser suficiente para permitir que los enlaces implícitos de Xcode funcionen correctamente. Más detalles aquí .

Tuve un problema extraño como este. Cambiar “Escanear todos los archivos de recursos …” a Sí no ayudó. Eché un vistazo a las rutas de búsqueda de Framework y noté que tenía

  • $ (heredado)
  • “$ (SRCROOT)”
  • “$ (SRCROOT) / my / correct / path”

Parecía correcto, pero seguía fallando. Luego intenté reorganizar el orden de 2 y 3 y de repente lo construí bien. Así que no estoy seguro de por qué ese fue el movimiento, pero quería agregarlo a la lista de cosas para probar en caso de que ayude a alguien más.

Mi solución fue cambiar mi

 #import "HeaderFile.h" 

a

 #import  

y todo comenzó a funcionar de nuevo. Lo que era inusual era que había dejado de funcionar de repente después de la construcción varias veces.

El problema se resolvió solo cuando configuré

Configuración de comstackción-> Proyecto-> Rutas de búsqueda a Sí

Tenía el mismo – 2 objectives en mi proyecto ( Project y GHUnit de GHUnit ). Cuando mi esquema se configuró para Project , la importación de era un problema de “archivo léxico o de problema de preprocesador no encontrado” . Pero cuando configuré un esquema ProjectTest , todo estuvo bien. Entonces, también he agregado GHUnitIOS.framework en Project .

Parece que las rutas de búsqueda de encabezado son incorrectas y no están configuradas correctamente en la configuración de comstackción para el esquema activo. Verifíquelos y actualice su pregunta con la configuración actual.

Tengo problemas similares en el simulador, pero no en el dispositivo, y los campos de la ruta de búsqueda de mi encabezado están vacíos (parece ser el valor predeterminado). Pero el cambio de Workspaces parece haber solucionado el problema. Tal vez podría intentar crear un nuevo espacio de trabajo, agregarle su proyecto y ver si eso ayuda. Ahora estoy investigando por qué.

Estaba obteniendo el error “archivo no encontrado” para un archivo .h particular en mi proyecto. Resolví el problema quitando ese archivo .h del proyecto (seleccionando “Eliminar referencias”) y volviéndolo a agregar.

Añadiendo más variantes: tuve dos instancias de foo.m en la fase de Compile Source comstackción, que de alguna manera causó que “encabezado no encontrado” para foo.h

Otra oportunidad:

En proyecto de área de trabajo: mire en el objective para la sección Crear fases. Como muchos manuales dicen, debes tener una Fase de comstackción de Copiar archivos para copiar todos tus encabezados a otro lugar, ya que iOS Framework no puede contener archivos de encabezado para compartir (este es mi caso).

Elija para aquellos Copiar archivos como opción de destino “Directorio de productos”. O en otro directorio de tu estilo donde residen los encabezados.

Eso funcionó para mí. Probablemente, la comstackción para el directorio Archive (o Release) es muy diferente de lo esperado en build para Debug.

También verifique en la configuración de su área de trabajo su directorio de comstackción.

XD

Para mí, este problema ocurrió después de que agregué nuevos archivos al proyecto; un .m y .h en blanco derivado de NSObject. Así es como lo resolví:

  1. Cerrado y reiniciado xCode
  2. Eliminado los dos nuevos archivos a través de XCode
  3. Recomstackdo con éxito

Luego los volví a agregar después y también funcionó.

Definitivamente un error en xCode …