Cette question a évolué au cours des dernières semaines pour couvrir des problèmes plus généraux avec xcode4 (et la mise à niveau des projets d'anciens xcodes).
Cependant, de nombreux problèmes peuvent être résolus en suivant le même ensemble d'instructions.
Si vous rencontrez l'un des problèmes suivants, essayez les méthodes de la réponse acceptée:
- Xcode 4 ne parvient pas à archiver une application
- Xcode 4 crée une archive inutilisable
- Xcode 4 ne crée pas de .ipa
- Xcode 4 ne parvient pas à se compiler en raison d'erreurs de préprocesseur
- Xcode 4 ne trouve pas les en-têtes
- Le code complet de Xcode 4 ne fonctionne pas
- Les dépendances du projet ne se compilent pas
- L'ajout d'une dépendance provoque l'un des problèmes ci-dessus
Question originale
Titre: "Fichier de problème lexical ou de préprocesseur introuvable" dans Xcode 4
J'ai un projet dans Xcode 4 qui se construira correctement et fonctionnera sur l'appareil et le simulateur, mais lorsque vous essayez d'archiver des erreurs lors de la recherche de fichiers d'en-têtes associés à une bibliothèque statique:
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 donne l'erreur
lexical or preprocessor issue file not found
Beaucoup de recherches sur Google ont montré que de nombreuses personnes avaient ce problème, mais aucune solution. Tout le monde a une solution ou même un indice.
Mise à jour: Les user header
chemins de recherche sont mis à ${BUILT_PRODUCTS_DIR}
dans toutes les configurations. Il se construit bien en utilisant n'importe quelle configuration sauf lors de l'archivage.
Mise à jour 2: Merchant.h
est une classe Core Data qui est générée automatiquement et donc à l'intérieur du .xcdatamodeld
package, cependant les en-têtes sont tous copiés dans le répertoire d'en-têtes public lorsque la bibliothèque est construite.
la source
J'ai eu le même problème dans XCode 4: "Problème lexical ou préprocesseur MyFile.h non trouvé". Cependant, MyFile.m n'était pas une bibliothèque statique, juste une classe standard. Et MyFile.m et MyFile.h ont été inclus correctement et indexés dans le projet.
Alors ... j'ai quitté XCode et le simulateur, puis les ai redémarrés et le problème a disparu.
la source
J'ai trouvé que le problème a disparu lorsque j'ai changé le paramètre de construction cible "analyser tous les fichiers source pour les inclusions" de non à oui.
la source
J'ai pu résoudre ce problème sans aucune modification des paramètres de construction en copiant simplement les fichiers .h dans le répertoire du projet dans le Finder. Je ne les ai PAS du tout ajoutés au projet. Les avoir simplement dans le répertoire du système de fichiers du projet semblait être suffisant pour permettre à la liaison implicite de Xcode de fonctionner correctement. Plus de détails ici .
la source
J'ai eu un problème étrange comme celui-ci. Changer "Analyser tous les fichiers de ressources ..." sur Oui n'a pas aidé. J'ai jeté un coup d'œil aux chemins de recherche du framework et j'ai remarqué que j'avais
Cela semblait juste mais échouait toujours. J'ai ensuite essayé de réorganiser l'ordre de 2 et 3 et tout d'un coup ça s'est bien construit. Donc, je ne sais pas pourquoi c'était le problème, mais je voulais l'ajouter à la liste des choses à essayer au cas où cela aiderait quelqu'un d'autre.
la source
Ma solution était de changer mon
à
et tout a recommencé à fonctionner. Ce qui était inhabituel, c'est qu'il avait cessé de fonctionner soudainement après avoir été construit plusieurs fois.
la source
Le problème s'est résolu quand je me suis mis
Paramètres de construction-> Projet-> Chemins de recherche sur Oui
la source
J'avais le même - 2 cibles dans mon projet ( Project et ProjectTest of
GHUnit
). Lorsque mon schéma a été configuré pour Project , l'importation de<GHUnitIOS/GHUnit.h>
était un problème de «fichier de problème lexical ou de préprocesseur introuvable» . Mais quand j'ai défini comme projet ProjectTest , tout allait bien. Donc, j'ai aussi ajoutéGHUnitIOS.framework
dans Project .la source
Il semble que vos chemins de recherche d'en-tête ne soient pas correctement configurés dans vos paramètres de construction pour le schéma actif. Vérifiez-les et mettez à jour votre question avec le paramètre actuel.
la source
J'ai des problèmes similaires sur le simulateur mais pas sur le périphérique et les champs de mon chemin de recherche d'en-tête sont vides (semble être par défaut). Mais l'évolution des espaces de travail semble avoir résolu le problème. Vous pourriez peut-être essayer de créer un nouvel espace de travail, y ajouter votre projet et voir si cela vous aide. Maintenant, je cherche pourquoi.
la source
J'obtenais cette erreur "fichier non trouvé" pour un fichier .h particulier dans mon projet. J'ai résolu le problème en supprimant ce fichier .h du projet (en sélectionnant "Supprimer les références") et en l'ajoutant à nouveau.
la source
Ajout de plus de variante: j'ai eu deux instances de
foo.m
dans laCompile Source
phase de construction, dont certaines ont causé "En-tête non trouvé"foo.h
.la source
Une autre chance:
Dans un projet d'espace de travail: regardez dans la section Cible les phases de construction. Comme de nombreux manuels le disent, vous devez avoir une phase de construction de copie de fichiers pour copier tous vos en-têtes vers un autre endroit, car iOS Framework ne peut pas contenir de fichiers d'en-tête à partager (c'est mon cas).
Choisissez pour ces Copier les fichiers comme option de destination "Répertoire des produits". Ou un autre répertoire de votre type où les en-têtes résideront.
Cela a fonctionné pour moi. La compilation du répertoire Archive (ou Release) est probablement très différente de celle attendue dans la compilation pour Debug.
Vérifiez également dans les paramètres de votre espace de travail votre répertoire de construction.
XD
la source
Pour moi, ce problème s'est produit après avoir ajouté de nouveaux fichiers au projet; un .m et .h vierges dérivés de NSObject. Voici comment je l'ai résolu:
Je les ai ensuite ré-ajoutés par la suite et cela a également fonctionné.
Certainement un bug dans xCode ...
la source