Quelle est la différence entre «Inclure les répertoires» et «Répertoires d’inclusion supplémentaires»

Dans les propriétés de configuration de mon projet, sous les “répertoires VC ++”, il existe une entrée pour “Inclure les répertoires”. Mais sous l’option “C / C ++”, il existe une autre entrée appelée “Répertoires d’inclusion supplémentaires”. La même chose se produit avec les répertoires de bibliothèque.

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

entrer la description de l'image icientrer la description de l'image ici

C’est une maladresse qui a été introduite dans VS2010. Les parameters de répertoires VC ++ se trouvaient auparavant dans Outils + Options, Projets et solutions, Répertoires VC ++. Paramètres globaux appliqués à chaque projet créé sur la machine. Il est toujours là mais indique que vous devez maintenant le modifier dans les parameters de votre projet. Un effet secondaire de la révision du moteur de génération dans VS2010, permettant la création avec msbuild. Supprimer les parameters 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 parameters de répertoires VC ++ comme la machine par défaut. Il est automatiquement prédéfini par l’installateur VS. Bricolez-le seulement si vous avez besoin d’un ordre de recherche de répertoire inhabituel, en plaçant les emplacements personnalisés en dernier. Très inhabituel de le faire.

Cela fonctionne cependant. Et il a finalement été mis à profit. Renforcer le paramètre Platform Toolset dans VS2012 et versions ultérieures. Compilateur différent, éditeur de liens différent, différents répertoires #include, chemin de recherche de l’éditeur de liens différent. Modifié avec juste un réglage, sympa.

Les répertoires Include correspondent à la variable d’environnement INCLUDE .

Les parameters de répertoire affichés dans la fenêtre sont les répertoires dans lesquels Visual Studio recherchera les fichiers d’inclusion mentionnés dans vos fichiers de code source. Correspond à la variable d’environnement INCLUDE.

Alors que les répertoires d’inclusion supplémentaires sont transmis via un argument de ligne de commande (c’est-à-dire l’option \I ).

CONFIGURER INCLURE LES CHEMINS

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

  • cette valeur est héritée de la variable d’environnement Windows INCLUDE définie en dehors de Visual Studio
    • les variables d’environnement peuvent être: globales à l’ordinateur ou avoir une scope de niveau utilisateur
    • Les variables d’environnement INCLUDE et LIB sont créées lorsque Microsoft Windows SDK est installé avec Visual Studio .

C / C ++: Répertoires d’inclusion supplémentaires

  • est un paramètre de niveau projet … vous devrez définir cette valeur pour chaque projet de votre solution
  • cette valeur peut être persistante au contrôle de la source

NOTES COMPLÉMENTAIRES

Lequel dois-je utiliser?

La décision d’utiliser les répertoires d’inclusion ou les répertoires d’inclusion 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 de manière cohérente et fiable l’environnement de développement (pensez à: transférer le code source à un autre développeur)
  • pour les développeurs au sein d’une organisation, utilisez une approche cohérente

Une note sur les macros

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

LES RÉFÉRENCES

  • Variables d’environnement (introduction générale)
  • Comment définir les variables de chemin et d’environnement dans Windows