web-dev-qa-db-fra.com

Comment corriger l'erreur PCH?

Lorsque j'essaie de créer mon application dans Xcode, le message d'erreur suivant s'affiche:

Fichier PCH créé à partir d'une branche différente ((clang-425.0.24)) de celle du fichier compilateur ((clang-425.0.27))

Cela n'arrivait pas avant, mais c'était la première construction après la mise à jour de Xcode.

D'autres applications fonctionnent, mais pas celle-ci.

Si je désactive le paramètre "Precompile Prefix Header", cela fonctionne.

Comment corriger cette erreur tout en maintenant ce paramètre?

123
Macro206

C'est souvent un problème de cache. En règle générale, il peut être résolu en maintenant la touche Option enfoncée et en choisissant Produit> Nettoyer le dossier de construction ...

232
gaige

Il semble que le Produit> Nettoyer le dossier de construction ... (avec la touche Option enfoncée) fonctionne pour la plupart des gens. Voir la réponse sélectionnée par @gaige.

Si vous êtes différent de la plupart des gens (moi inclus) et que cela vous cause toujours des problèmes, XCode a probablement laissé vos en-têtes précompilés partagés ailleurs. Pour moi, ils étaient dans un dossier similaire à celui-ci:

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

Je viens de supprimer le dossier entier SharedPrecompiledHeaders et cela a résolu le problème pour moi. Je n'irais pas toucher beaucoup d'autre ici cependant ...

37
Sedes

Soufflez dans le dossier DerivedData pour le projet. Regardez sous Préférences Xcode -> Emplacements pour voir où vous enregistrez.

30
wcochran

Allez dans Préférences Xcode -> Emplacements (comme indiqué dans la réponse de wcochran) et renommez simplement votre dossier DerivedData. J'ai simplement changé le mien de "DerivedData" à "DerivedData2" et cela a forcé le système à cesser de référencer l'ancien emplacement. Cela a réglé le problème pour moi lorsqu'aucune des autres réponses ne fonctionnait. Voir photo:

 enter image description here

17
Alyoshak

Supprimer les dossiers Build et DerivedData de l'emplacement du projet dans le Finder a fonctionné pour moi.

12
spfursich

Aucune des autres options n'a fonctionné pour moi, voici ce qui l'a corrigé:

J'ai supprimé le dossier de cache à /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/ (renommer cela fonctionne aussi). 

Essayez de supprimer le dossier mentionné dans l'erreur, si votre erreur ressemble à ceci:

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

11
Stan Tatarnykov

Après la mise à niveau de Xcode, je l’obtenais avec plusieurs projets. Clean Build Folder et Clean n'ont eu aucun effet - @sedes answer et le commentaire de @ josema.vitaminew l'ont fait pour moi. Mais cela peut être délicat à moins que vous utilisiez un peu de ruse, alors voici un raccourci pas à pas:

  1. aller au journal de construction qui a échoué
  2. utilisez cmd-f "SharedPrecompiledHeaders" pour le trouver (ce sera au milieu d'une ligne de commande complexe et horrible)
  3. faites glisser le texte "SharedPrecompiledHeaders" et tous les caractères AVANT, mais PAS APRÈS APRÈS le début du bit de chemin (toujours au milieu du gros bloc de texte), par exemple. pour moi: "/var/folders/03/n71d4r551jv40j5nb8r9fjy80000gn/C/com.Apple.Xcode.501/SharedPrecompiledHeaders
  4. open Finder
  5. menu: Aller -> Aller au dossier ...
  6. copier/coller le chemin sélectionné
  7. dans "SharedPrecompiledHeaders", supprimez TOUS les sous-dossiers (ceci est sûr: ce ne sont que des données mises en cache)

... et maintenant tous vos projets seront "corrigés", mais devront se reconstruire pour la première fois sans mise en cache (ainsi, la construction NEXT ONLY sera plus lente que la normale).

6
Adam

Dans le répertoire de votre projet ios, accédez au dossier build et supprimez ModuleCache . Exécutez à nouveau react-native run-ios, cela devrait fonctionner comme prévu ..__ Résumé - rm -rf ios/build/ModuleCache

6
Ritik Rishu

dans mon cas, je me suis débarrassé de tous les fichiers sous SharedPrecompiledHeaders de cette façon et tout a commencé à bien fonctionner:

Sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir Sudo find dir -name \* -type f -delete
5
Hamid

Spécialement si vous construisez à partir de la ligne de commande ou si vous avez un script de compilation, le nettoyage de la cible xcode ne suffit pas. Vous avez supprimé ce dossier. 

L’emplacement de l’en-tête précompilé se trouve dans le répertoire 

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

Supprimer ce dossier avec,

#rm -fr SharedPrecompiledHeaders

enter image description here

4
karim

Dans mon cas, Xcode créait le dossier DerivedData dans le lot principal de mon projet (/ Users/Path_to_your_project_source_code/YourProjectName/DerivedData).

Je viens de supprimer ce dossier de mon lot de code source et maintenant, il fonctionne.

Pour vérifier Allez dans Préférences Xcode -> Emplacements et voyez si DerivedData est sélectionné sur "Relatif". Voir l'image ci-dessous  enter image description here

3
Dilip Saket

Si ce n'est pas résolu par le nettoyage. C’est un problème de cache de construction - maintenez la touche Option enfoncée et accédez à Produit> Nettoyer le dossier de construction. Cela a résolu mon problème.

3
Vardhan

J'ai rencontré cette erreur en essayant de construire un projet avec Swift Package Manager.

La solution consiste simplement à supprimer le répertoire .build.

2
Zigii Wong

vous devriez maintenir "shift + command + C" enfoncé, et ensuite vous construirez avec succès

2
Peter Zhu

Si une nouvelle version ne fonctionne pas pour vous, recherchez les fichiers PCH dans /var/folders/../SharedPrecompiledHeaders et supprimez-les, ce qui a fonctionné pour moi.

2
Jonathan Lin

Le nettoyage et/ou la suppression des données dérivées ne fonctionnaient pas pour moi. Ce qui a bien fonctionné est de toucher/enregistrer le fichier .pch (ajouter un caractère, puis le supprimer) pour le forcer à être reconstruit. Cela a fait le tour.

2
Alfie Hanssen

Vous pouvez essayer de nettoyer le produit ou le dossier de construction:

SHIFT + COMMAND + K

OPTION + SHIFT + COMMAND + K

2
Mateus

MIS &AGRAVE; JOUR

Cela a parfaitement fonctionné pour moi: 

  • Fermez votre projet ou votre espace de travail.
  • Dans le Finder: shift + ⌘cmd + G
  • Coller: ~/Bibliothèque/Developer/Xcode/DerivedData /
  • Supprimez le dossier ModuleCache et videz la corbeille.
  • Ouvrez votre projet.
  • Propre: shift + ⌘cmd + K
  • Construire: ⌘cmd + B

xCode 7.3.1
référence ici

1
Daniel Morandini

J'ai essayé de nettoyer le projet et de nettoyer le dossier de construction qui ne fonctionnait pas tous les deux.

Après cela, j'ai complètement quitté xCode, supprimé le dossier de données dérivé à son emplacement standard: ~/Library/Developer/Xcode/DerivedData, lancé à nouveau xCode et construit le projet. 

Cela semblait avoir résolu le problème pour moi.

1

Si vous construisez une ligne de commande avec xcodebuild, voyez si l'option -derivedDataPath BUILD_DIR est utilisée. Si tel est le cas, votre répertoire ModuleCache.noindex se trouvera dans BUILD_DIR au lieu de l'emplacement Xcode normal. Supprimez le répertoire ModuleCache.noindex et vous serez tous ensemble.

J'ai rencontré cette situation car je construis une application React Native et le client iOS est généralement construit à partir de la ligne de commande via le jeu d'outils React Native.

0
phatmann

Je viens de supprimer DerivedData et j'ai travaillé pour moi.

0
KAUSHIK PARMAR

Pour moi, cela se produirait toujours lorsque je copierais mon projet vers un autre emplacement. Je ferais cela pour le pousser dans un repo ou quelque chose. 

Je dois supprimer le dossier de construction (rm -rf Build /) dans les anciens et nouveaux emplacements pour le faire fonctionner. Cela a du sens, car le dossier de construction contiendra des données non pertinentes pour le nouvel emplacement. 

Le nettoyage des données dérivées ou la suppression des dossiers sharedPrecompiledHeaders ne l'ont pas vraiment fait dans ce cas.

0
TheJeff