Erreur du compilateur Xcode version 4.6.2 (4H1003)

88

Je viens de mettre à jour la version 4.6.2 de Xcode (4H10003) et j'ai essayé d'exécuter un projet d'application précédemment fonctionnel dans le simulateur et j'ai reçu l'erreur suivante et la construction a échoué.

Fichier PCH construit à partir d'une branche différente ((clang-425.0.27)) du compilateur ((clang-425.0.28))

Qu'est-ce qui ne va pas et comment peut-il être corrigé?

OscarTheGrouch
la source
J'ai essayé de faire un produit -> Nettoyer et supprimer l'application précédemment construite du simulateur. Aucun n'a fonctionné.
OscarTheGrouch
2
"Clean Build Folder" n'a pas résolu mon problème lors de la construction sur un périphérique (essayé plusieurs fois). J'ai dû "nettoyer le dossier de construction", construire sur le simulateur, puis construire sur l'appareil, il a été résolu.
DBD

Réponses:

183

Faites un nettoyage du projet; maintenez Option pour nettoyer tout le dossier de construction et les intermédiaires. Vous devrez peut-être quitter Xcode et jeter tout le contenu du dossier DerivedData à la main dans le Finder, comme je le décris ici: Comment vider les caches et nettoyer toutes les cibles Xcode 4

mat
la source
Oui, un nettoyage a fonctionné pour moi aussi. L'erreur indique simplement que les en-têtes pré-compilés ont été créés avec une version différente et ne sont pas compatibles avec la dernière version du compilateur.
zingle-dingle
Si cela ne vous est pas arrivé lors des mises à niveau précédentes de Xcode, vous avez simplement eu de la chance. Cela m'est arrivé. On s'y habitue après un certain temps ...
mat
Cela a fonctionné pour moi après avoir fait le 'Clean Build Folder' avec l'option maintenue enfoncée. Merci!
Luc
1
Cela a fonctionné pour moi merci ... Je ne savais pas que le fait de détenir l'option fait un autre type de nettoyage.
OscarTheGrouch
Cela ne fonctionne que pour la construction dans Xcode. Si vous construisez à partir de la ligne de commande, consultez l'article de Rodrigo Lima ci-dessous.
Jeff
21

Accédez à votre projet Build Settings, recherchez un paramètre nommé Precompiled Headers Cache Path, puis supprimez ce dossier

sycx
la source
Seule cette action m'a aidé avec le problème mentionné. Merci!
Orange
13

Effectuez un nettoyage en utilisant command+shift+ket exécutez à nouveau le projet existant.

entrez la description de l'image ici

Vaibhav Saran
la source
9

À partir des notes de publication de XCode 4.6.2

Problèmes connus

Bâtiment

Lors de la construction d'un produit précédemment construit avec Xcode 4.6.1 ou une version antérieure, la construction échoue avec une erreur similaire à celle-ci:

Fichier PCH construit à partir d'une branche différente ((clang-425.0.27)) du compilateur ((clang-425.0.28))

Pour résoudre ce problème, choisissez Produit> Nettoyer avant de créer votre produit. 13663167

Produit performant> Travaux propres

Michael Davidovich
la source
1
Oui, c'était un problème avec les versions précédentes, mais il est reconnu qu'il vaut la peine d'être mentionné dans les notes de publication seulement maintenant. En outre, ils ne donnent aucune solution aux personnes n'utilisant pas Xcode comme IDE, @sycx le fait (effacez le chemin du cache des en-têtes précompilés).
A-Live du
9

J'ai essayé tout ce qui précède et cela fonctionne bien à partir de l'interface utilisateur Xcode, mais cela échouait toujours pour moi lorsque j'ai exécuté xcodebuild à partir de la ligne de commande .

Cela était dû aux dépendances avec d'autres bibliothèques et à leurs en-têtes de pré-compilation. Lors de l'exécution à partir de la ligne de commande, ressemble à xcodebuild store / lit les en-têtes pré-compilés à partir d'ici:

/var/folders/v0/ztxy9kls7sv05dpmvjgg_xwr0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders

Après avoir nettoyé ce dossier, xcodebuild a réussi.

Rodrigo Lima
la source
2
Cet emplacement de dossier sera différent pour tout le monde, donc un moyen rapide de localiser le bon dossier à nettoyer est d'utiliser un find + grep ... sudo find / var / folders | grep SharedPrecompiled
Greg Combs
1
J'ai eu le même problème. L'exécution à partir de la ligne de commande a échoué, même si je pouvais construire à partir de Xcode. J'ai fini par courir: sudo find /private/var/folders -name SharedPrecompiledHeaderspuis j'ai vidé les répertoires résultants. A travaillé comme un charme.
Jeff
Si je pouvais donner à cela un vote positif supplémentaire, je le ferais. Le nettoyage ne semble vraiment pas fonctionner de ma part lors de la construction à partir de la ligne de commande. Je m'attendais à ce que ce soit le cas, mais savoir où chercher les en-têtes précompilés était très utile.
John Bowers
4

Surtout si vous construisez à partir de la ligne de commande ou si vous avez un script de construction, le nettoyage de la cible xcode ne suffit pas. Vous devez supprimer ce dossier.

L'emplacement exact de l'en-tête précompilé peut être trouvé dans le projet, une partie du chemin du dossier est aléatoire (je suppose), surtout après /var/folders/xx..xxx/C.

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

Exécutez Terminal et allez dans ce dossier et supprimez (utilisez la commande),

#rm -fr SharedPrecompiledHeaders

entrez la description de l'image ici

Karim
la source
Très bonne réponse! Mais je n'avais pas de tel dossier à cet emplacement (même à l'invite du terminal en utilisant ls -lAhF). Cependant, la fermeture de Xcode, puis la suppression du dossier com.apple.Xcode.501 fonctionnaient très bien.
RedYeti
L'emplacement exact de l'en-tête précompilé peut être trouvé dans le projet, une partie du chemin du dossier est aléatoire (je suppose), surtout après /var/folders/xx..xxx/C.
karim
Désolé - je n'ai pas été clair. Oui, le chemin changera toujours sous / var / folders / * mais le dossier qui n'était pas là était "SharedPrecompiledHeaders" - ce qui m'a surpris. Mais la suppression du dossier parent que j'ai mentionné devrait fonctionner sans problème.
RedYeti
4

J'ai dû supprimer manuellement ~/Library/Developer/Xcode/DerivedData/ Clean ne fonctionnait pas pour moi.

Orkoden
la source
0

utilisez "commande + shift + k" pour nettoyer votre projet, alors tout ira bien.

Yiyue Wang
la source
0

Nettoyez votre projet et exécutez

Produit-> Nettoyer puis, exécuter.

Vineesh TP
la source