2009-06-22 7 views
0

Lors de la construction d'un projet dans Xcode (3.1.2), 2 dossiers sont automatiquement ajoutés comme les répertoires d'en-tête avec l'option '-I':-Wmissing-include-dirs et répertoires d'en-tête automatiquement inclus

/ (ProjPath)/(ProjName)/build/(BuildConfigName)/include 
/(ProjPath)/(ProjName)/build/(ProjName).build/(BuildConfigName)/(ProjName).build/DerivedSources 

I réalisé ceci en essayant d'ajouter -Wmissing-include-dirs à la liste d'avertissements dans mon projet. Un avertissement est émis pour les deux dossiers. Cela se produit à la fois pour les applications Cocoa et les bibliothèques dynamiques C++. Je n'ai pas essayé d'autre type de projet, mais je suppose que ce comportement s'applique à tout type de projet.

  1. Comment ces dossiers sont-ils utilisés par Xcode?
  2. Peuvent-ils être évités ou créés automatiquement par Xcode au début de la construction?
  3. Si non, comment utiliser avec succès -Wmissing-include-dirs avec Xcode?

Merci.

+1

Ces répertoires sont utilisés lorsque vous avez des sources dérivées qui créent des fichiers d'en-tête ou lorsqu'une partie de votre génération génère des fichiers d'en-tête (comme construire une bibliothèque dynamique qui est une cible séparée dont les fichiers include sont ensuite utilisés). Ces cas ne sont pas souvent utilisés et dans un environnement comme Xcode, l'avertissement -Wmissing-include-dirs est presque sans signification. Je vous suggère de supprimer cet avertissement et de ne pas tenter de modifier vos modèles de projet à moins que vous ne sachiez ce que vous faites et pourquoi. Vous pouvez également les créer automatiquement en ajoutant une phase de construction de script d'exécution à votre cible. –

+0

Mon but est d'activer l'avertissement SI cela peut être utile. Pouvez-vous expliquer pourquoi il est presque insignifiant dans Xcode? – Guillaume

+1

Parce que Xcode gère l'environnement de construction pour vous. Cet avertissement vous indique que vous avez peut-être mal saisi le chemin d'accès à un répertoire d'inclusion spécial ou que les fichiers d'en-tête ne sont pas installés aux emplacements prévus. –

Répondre

1

Vous pouvez ajouter un script à votre cible qui crée les répertoires pour votre:

Faites un clic droit de votre cible, sélectionnez Ajouter -> Nouvelle phase de construction -> Nouveau Exécuter le script Phase de construction. Faites glisser cette phase de construction vers le haut de votre cible, avant la phase "Compiler les sources".

Entrez ensuite un script comme celui-ci (en double-cliquant sur la phase):

mkdir -p "${TARGET_BUILD_DIR}/include" 
mkdir -p "${PROJECT_DERIVED_FILE_DIR}" 

Vous pouvez voir les différentes variables d'environnement dans la transcription de la construction (Commande-Maj-B, cliquez sur l'icône peu de texte, faites glisser la transcription de construction.)

+0

Merci pour le conseil. PROJECT_DERIVED_FILE_DIR n'est pas la variable nécessaire dans mon cas (elle n'inclut pas le nom de configuration de construction). DERIVED_FILES_DIR, DERIVED_FILE_DIR ou DERIVED_SOURCES_DIR doivent être utilisés à la place. – Guillaume

Questions connexes