Quelle est la différence entre "Inclure les répertoires" et "Inclure les répertoires supplémentaires"

94

Dans les propriétés de configuration de mon projet, sous les "répertoires VC ++", il y a une entrée pour "Inclure les répertoires". Mais sous l'option "C / C ++", il existe une autre entrée appelée "Additional Include Directories". La même chose se produit avec les répertoires de bibliothèques.

Quelle est la différence entre ces deux entrées?

entrez la description de l'image ici entrez la description de l'image ici

Artium
la source

Réponses:

48

C'est une maladresse qui a été introduite dans VS2010. Les paramètres des répertoires VC ++ se trouvaient auparavant dans Outils + Options, Projets et solutions, Répertoires VC ++. Paramètres globaux qui s'appliquaient à chaque projet créé sur la machine. Il est toujours là, mais indique que vous devez maintenant le modifier dans les paramètres de votre projet. Un effet secondaire de la refonte du moteur de build dans VS2010, permettant la construction avec msbuild. La suppression des paramètres par projet aurait été logique, mais cela briserait trop de projets existants.

En tant que tel, il est probablement préférable de traiter les paramètres des répertoires VC ++ comme les paramètres par défaut de la machine. Il est automatiquement préréglé par l'installateur VS. Bricolez-le uniquement si vous avez besoin d'un ordre de recherche inhabituel dans le répertoire, en mettant les emplacements personnalisés en dernier. Très inhabituel de le faire.

Cela fonctionne cependant. Et il en a finalement profité. Renforcer le paramètre Platform Toolset dans VS2012 et versions ultérieures. Un compilateur différent, un éditeur de liens différent, différents répertoires #include, un chemin de recherche différent pour l'éditeur de liens. Modifié avec un seul réglage, sympa.

Hans Passant
la source
3
Hmmm ... Il est vrai que les options gloabl sont enregistrées sous ceci - mais c'est la feuille de propriétés Microsoft.Cpp.Win32.useret seulement ceci. Si vous modifiez l'entrée "Répertoires VC ++" lorsque le projet est actif ou une autre feuille de propriétés, la modification sera conservée dans le .vcxprojfichier ou dans le .propsfichier respectif et ne sera pas du tout globale ou à l'échelle de l'utilisateur.
Martin Ba
25

L' inclusion de répertoires correspond à la variable d'environnement INCLUDE.

Les paramètres de répertoire affichés dans la fenêtre sont les répertoires dans lesquels Visual Studio recherchera les fichiers d'inclusion auxquels se réfèrent vos fichiers de code source. Correspond à la variable d'environnement INCLUDE.

Alors que les répertoires d'inclusion supplémentaires sont passés via un argument de ligne de commande (c'est-à-dire l' \Ioption).

CodeNaked
la source
19

CONFIGURATION INCLUER LES CHEMINS

Répertoires VC ++: inclure les répertoires

  • cette valeur est héritée de la variable d'environnement INCLUDE Windows qui est définie en dehors de Visual Studio
    • les variables d'environnement peuvent être: globales à l'ordinateur ou avoir une portée de niveau utilisateur
    • Les variables d'environnement INCLUDEet LIBsont créées lorsque le Kit de développement logiciel (SDK) Microsoft Windows est installé avec Visual Studio .

C / C ++: répertoires d'inclusion supplémentaires

  • est un paramètre au niveau du projet ... vous devrez définir cette valeur pour chaque projet de votre solution
  • cette valeur peut être conservée dans le contrôle de code source

NOTES COMPLÉMENTAIRES

Lequel dois-je utiliser?

La décision d'utiliser des répertoires inclus ou des répertoires inclus supplémentaires dépendra du processus de développement de votre organisation. À mon avis, c'est plus important:

  • que vous êtes en mesure de recréer l'environnement de développement de manière cohérente et fiable (pensez: transférer le code source à un autre développeur)
  • pour les développeurs au sein d'une organisation utiliser une approche cohérente

Remarque sur les macros

  • Les macros de configuration de projet C ++ (à ne pas confondre avec la #definedirective de pré-processeur C ++ ) héritent du contenu de différentes sources. Des macros comme ...
    • $(Include)héritent de leurs valeurs des variables d'environnement Windows
    • $(OutDir)héritent de leurs valeurs de Visual Studio IDE

RÉFÉRENCES

Pressacco
la source