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é?


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


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


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


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


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.


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


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.


0

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


0

Nettoyez votre projet et exécutez

Produit-> Nettoyer puis, exécuter.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.