¿Cómo reparar el error de PCH?

132

Cuando intento compilar mi aplicación Xcode, recibo este mensaje de error:

Archivo PCH creado desde una rama diferente ((clang-425.0.24)) que el compilador ((clang-425.0.27))

No sucedió antes, pero esta fue la primera versión después de actualizar Xcode.

Otras aplicaciones funcionan, pero no esta específica.

Si apago la "Precompile Prefix Header"configuración, funciona.

¿Cómo soluciono este error y sigo manteniendo esa configuración?

Macro206
fuente

Respuestas:

246

Esto es a menudo un problema de almacenamiento en caché. Por lo general, se puede resolver manteniendo presionada la tecla Opción y seleccionando Producto> Limpiar carpeta de compilación ...

gaige
fuente
3
Esto no solucionó el error para mí. También realicé una limpieza completa y eliminé los datos derivados.
Ben S
66
Funcionó para mí, excepto que estaba bajo Product> Cleany no necesitaba la tecla de comando. (Xcode 4.6.1)
Steve Haley
1
@SteveHaley Hay un Product > Clean, pero hace un trabajo menos completo. Algunas personas pueden comprar con Product > Clean, para la mayoría Product > Clean Build Folder...es suficiente, y otras necesitan la extracción manual como se indica en la respuesta de @Sedes a continuación.
gaige
77
Sé que su vieja pregunta, pero la solución mencionada anteriormente no me ayudó. Simplemente eliminando Datos Derivados y compilando el proyecto nuevamente funciona bien.
Ankit Jain
2
¿puedes hacer rm -rf / ios / build?
SuperUberDuper
47

Eliminar la DerivedDatacarpeta para el proyecto. Busque en las preferencias de Xcode -> Ubicaciones para ver dónde lo guarda.

wcochran
fuente
Es importante tener en cuenta que DerivedDatano es necesariamente donde está su Buildcarpeta, esto me ayudó mucho, ¡gracias!
Nit
1
eliminar moduleCachedentro de DerivedDatatambién
whtlnv
Primero debe intentar "limpiar" como dicen las otras respuestas. Cuando esto no funciona, simplemente eliminaría recursivamente toda la DerivedDatacarpeta ... "Nuke de la órbita ... única forma de estar seguro". @whitelionV esto también rm moduleCachey todo lo demás allí.
wcochran
39

Parece que el Producto> Limpiar carpeta de compilación ... (con la tecla Opción presionada) funciona para la mayoría de las personas. Ver la respuesta seleccionada por @gaige.

Si no es como la mayoría de las personas (incluido yo mismo) y esto todavía le causa problemas, es probable que XCode haya dejado sus encabezados precompilados compartidos en otro lugar. Para mí estaban en una carpeta similar a esta:

/var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders

Acabo de eliminar toda la carpeta SharedPrecompiledHeaders y eso resolvió las cosas por mí. Aunque no tocaría mucho más aquí ...

Sedes
fuente
2
Esto solucionó este problema para mí. Para mí es porque tengo una compilación impulsada por línea de comandos.
ThomasW
2
Si este es su caso, puede encontrar esa carpeta en la transcripción de compilación de Xcode. Busqué la cadena "SharedPrecompiledHeaders"
José Manuel Sánchez
66
Sí, esta es la solución correcta. Especialmente si compila desde la línea de comandos o tiene un script de compilación. La ubicación del encabezado precompilado se puede encontrar en la configuración de compilación, "Ubicaciones de compilación" -> Ruta en caché de encabezados precompilados.
karim
¿Cómo encuentras el directorio var?
GoldenJoe
1
@GoldenJoe Open Finder, Shift-Cmd-Gy escriba/var
Sedes
23

Vaya a Preferencias de Xcode-> Ubicaciones (como se menciona en la respuesta de wcochran) y simplemente cambie el nombre de su carpeta DerivedData. Simplemente cambié el mío de "DerivedData" a "DerivedData2" y eso obligó al sistema a dejar de hacer referencia a la ubicación anterior. Esto me lo arregló cuando ninguna de las otras respuestas funcionó. Ver foto:

ingrese la descripción de la imagen aquí

Alyoshak
fuente
15

Ninguna de las otras opciones funcionó para mí, esto es lo que lo solucionó:

Eliminé la carpeta de caché en /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/(cambiar el nombre también funciona).

Intente eliminar la carpeta mencionada en el error, si su error se ve así:

PCH was compiled with module cache path '/Users/User/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8', but the path is currently '/Users/Stan/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8

Stan Tatarnykov
fuente
Sí, tiene usted razón. Nada de lo anterior funciona para mí. Simplemente elimine la carpeta que mencionó y reconstruya, eso es todo.
Zhang Buzz
Esta es la respuesta correcta. Limpiar / eliminar DerivedData no funciona para mí después de mover el proyecto a otra ruta.
Bill Chan
13

Eliminar las carpetas Buildy DerivedDatade la ubicación del proyecto en Finder funcionó para mí.

spfursich
fuente
podría ser la .buildcarpeta para algunas personas (incluyéndome a mí)
Florian Pfisterer
Funciona bien. Ver también stackoverflow.com/questions/33653727/…
Mr-IDE
13

En su directorio de proyectos ios, vaya a compilar y eliminar la carpeta ModuleCache . Ejecutar de react-native run-iosnuevo, debería funcionar como se esperaba. Resumen -rm -rf ios/build/ModuleCache

Ritik Rishu
fuente
Sí, también en react-native y build funciona desde Xcode pero no desde CLI usando npm run ios. Eliminar el caché como se sugirió resolvió el problema.
dakt
6

Después de actualizar Xcode, estaba obteniendo esto con múltiples proyectos. Clean Build Folder y Clean no tuvieron ningún efecto: la respuesta de @sedes y el comentario de @ josema.vitaminew lo hicieron por mí. Pero puede ser complicado a menos que uses un poco de astucia, así que aquí hay un atajo paso a paso:

  1. ir al registro de compilación que falló
  2. use cmd-f "SharedPrecompiledHeaders" para encontrarlo (estará en el medio de una línea de comando compleja y horrible)
  3. arrastre y seleccione el texto "SharedPrecompiledHeaders" y todos los caracteres ANTES pero NO DESPUÉS hasta que llegue al inicio de ese bit de ruta (todavía en el medio del gran bloque de texto), por ejemplo, para mí: "/ var / folder / 03 /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. buscador abierto
  5. menú: Ir -> Ir a la carpeta ...
  6. copiar / pegar la ruta seleccionada
  7. en "SharedPrecompiledHeaders" elimine TODAS las subcarpetas (esto es seguro: solo son datos en caché)

... y ahora todos sus proyectos serán "fijos", pero tendrán que reconstruirse ellos mismos la primera vez con almacenamiento en caché cero (por lo que la construcción SIGUIENTE SOLAMENTE será más lenta de lo normal).

Adán
fuente
5

en mi caso me deshice de todos los archivos en SharedPrecompiledHeaders de esta manera y todo comenzó a funcionar bien:

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete
Hamid Tavakoli
fuente
Esto es algo que puedo usar fácilmente en un script, así que me gusta ... No he descubierto ningún caso malo [todavía]
Matt
5

Encontré este error al intentar construir un proyecto con Swift Package Manager.

La solución es simplemente eliminar el .builddirectorio.

Zigii Wong
fuente
4

Especialmente si compila desde la línea de comandos o tiene un script de compilación, limpiar el objetivo de xcode no es suficiente. Has eliminado esta carpeta.

La ubicación del encabezado precompilado se puede encontrar en

Target -> build settings => "Build locations" -> Precompiled headers cached path

Eliminar esta carpeta con,

#rm -fr SharedPrecompiledHeaders

ingrese la descripción de la imagen aquí

karim
fuente
Mi ruta de caché estaba en la carpeta de compilación / build / ModuleCache /. Quitarlo de la ubicación anterior no
funcionó
3

Si no se resuelve limpiando. Es un problema de caché de compilación: mantenga presionada la tecla Opción y navegue hasta Producto> Limpiar carpeta de compilación. Eso solucionó mi problema.

Vardhan
fuente
3

En mi caso, Xcode estaba creando la carpeta DerivedData en el paquete principal de mi proyecto (/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)

Acabo de eliminar esta carpeta de mi paquete de código fuente y ahora está funcionando.

Para verificar Ir a Preferencias de Xcode-> Ubicaciones y ver si DerivedData está seleccionado como "Relativo". Mira la imagen de abajo ingrese la descripción de la imagen aquí

Dilip Saket
fuente
3

Para mí, esto siempre sucedería cuando copie mi proyecto en otra ubicación. Haría esto para llevarlo a un repositorio o algo así.

Tengo que eliminar la carpeta de compilación (rm -rf Build /) en las ubicaciones antiguas y nuevas para que funcione. Tiene sentido porque la carpeta Build tendrá datos que son irrelevantes para la nueva ubicación.

La limpieza de datos derivados o la eliminación de las carpetas sharedPrecompiledHeaders realmente no lo hicieron en este caso.

TheJeff
fuente
2

deberías mantener presionado "shift + command + C", y luego construirás con éxito

Peter Zhu
fuente
2

Limpiar y / o eliminar datos derivados no funcionó para mí. Lo que funcionó fue tocar / guardar el archivo .pch (agregar un carácter, luego eliminarlo) para forzar su reconstrucción. Esto hizo el truco.

Alfie Hanssen
fuente
Esto funcionó para mí. Eliminé el directorio SharedPrecompiledHeaders, compilación limpia, carpeta de compilación limpia, etc. Esto estaba en Xcode 5.1
migs647
¿Dónde está el archivo PCH?
TheJeff
2

Si hacer una compilación limpia no funciona para usted, busque los archivos PCH /var/folders/../SharedPrecompiledHeadersy elimine los archivos PCH, lo que funcionó para mí.

Jonathan Lin
fuente
2
Hay una respuesta idéntica a esta con más detalles publicados anteriormente por @sedes. Intenta no publicar respuestas duplicadas.
michaellindahl
2

Puede intentar limpiar el producto o la carpeta de compilación:

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K

Mateus
fuente
2

Si está realizando una compilación de línea de comandos xcodebuild, vea si -derivedDataPath BUILD_DIRse utiliza la opción. Si es así, su directorio ModuleCache.noindex estará en BUILD_DIR en lugar de la ubicación normal de Xcode. Elimine el directorio ModuleCache.noindex y estará todo listo.

Me encontré con esta situación porque estoy creando una aplicación React Native, y el cliente iOS generalmente se construye desde la línea de comandos a través del conjunto de herramientas React Native.

phatmann
fuente
1

Intenté limpiar el proyecto y limpiar la carpeta de compilación que no funcionó.

Después de eso, salí completamente de xCode, eliminé la carpeta de datos derivados en su ubicación estándar: ~ / Library / Developer / Xcode / DerivedData, comencé xCode nuevamente y construí el proyecto.

Eso parecía haber resuelto el problema para mí.

tcd1980
fuente
¿Podrías elaborar un poco por favor?
Richard Dally
Cerrar Xcode, ejecutar rm -rf ~/Library/Developer/Xcode/DerivedDataen Terminal y luego abrir Xcode lo hizo por mí. También me aseguré de que mis ubicaciones (Xcode -> Preferencias -> Ubicaciones) fueran todas predeterminadas.
sman591
1

ACTUALIZADO

Esto funcionó perfectamente para mí:

  • Cierra tu proyecto o espacio de trabajo.
  • En Finder: ⇧shift + ⌘cmd + G
  • Pegar: ~ / Library / Developer / Xcode / DerivedData /
  • Elimine la carpeta ModuleCache y vacíe la papelera.
  • Abre tu proyecto.
  • Limpio: ⇧ Shift + ⌘cmd + K
  • Construir: ⌘cmd + B

7.3.1 xCode
referencia aquí

Daniel Morandini
fuente
0

Acabo de eliminar DerivedDatay trabajé para mí.

KAUSHIK PARMAR
fuente