objective c - smart - Compila, compila o archiva problemas con Xcode 4(y dependencias)
solidity español (14)
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 compilar 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 compilará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 compilará 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.
- Compruebe que las "rutas del encabezado del usuario" son correctas (agregue "" a las rutas para espacios, tanto en su proyecto como en las dependencias)
- Establezca "Buscar siempre rutas de usuario" en SÍ
- 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 objetivo 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.
- Para todas las dependencias, configure "Omitir instalación " en "Sí"
- Mover cualquier encabezado "Público" en Fases de compilación a "Proyecto"
- Establezca la configuración de compilación "Directorio de instalación" en su destino en
$(LOCAL_APPS_DIR)
- Cambie la configuración de compilación de destino "escanear todos los archivos de origen para incluir" en SÍ. ( link )
- Con las versiones más recientes de Xcode (> 4.2) es posible que desee leer esta pregunta relacionada con los espacios de trabajo.
- Elimine manualmente los archivos project.xcworkspace de todos los proyectos a los que se hace referencia
Añadiendo más variantes: tuve dos instancias de foo.m
en la fase de Compile Source
compilación, que de alguna manera causó que "encabezado no encontrado" para foo.h
Descubrí que el problema desapareció cuando cambié la configuración de compilación de destino "escanear todos los archivos fuente para incluir" de no a sí.
El problema se resolvió solo cuando configuré
Configuración de compilación-> Proyecto-> Rutas de búsqueda a Sí
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.
Mi solución fue cambiar mi
#import "HeaderFile.h"
a
#import <FrameworkName/HeaderFile.h>
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.
Otra oportunidad:
En proyecto de área de trabajo: mire en el objetivo para la sección Crear fases. Como muchos manuales dicen, debes tener una Fase de compilació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 compilació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 compilació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í:
- Cerrado y reiniciado xCode
- Eliminado los dos nuevos archivos a través de XCode
- Recompilado con éxito
Luego los volví a agregar después y también funcionó.
Definitivamente un error en xCode ...
Parece que las rutas de búsqueda de encabezado son incorrectas y no están configuradas correctamente en la configuración de compilación para el esquema activo. Verifíquelos y actualice su pregunta con la configuración actual.
Pude resolver este problema sin ningún cambio en ninguna de las configuraciones de compilació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í .
Tenía el mismo - 2 objetivos en mi proyecto ( Project y GHUnit
de GHUnit
). Cuando mi esquema se configuró para Project , la importación de <GHUnitIOS/GHUnit.h>
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 .
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é.
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ó.
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.