web-dev-qa-db-fra.com

Comment fonctionnent les chemins d'inclusion dans Visual Studio?

Visual Studio me rend fou et je soupçonne que je fais quelque chose de mal.

Voici ce que je fais: j'ai installé Visual Studio (Pro '08) il y a longtemps, j'ai installé le SDK Windows (Win 7 x64), quelqu'un m'envoie un projet par e-mail, il ne parvient pas à générer.

Invariablement, il ne peut pas trouver windows.h. Bien qu'il soit assez facile d'inclure C:\Program Files\Microsoft SDKs\Windows\v7.0\Include dans les paramètres de projet de chaque projet, j’estime que ce n’est peut-être pas la bonne façon de procéder. Existe-t-il un moyen de rendre Visual Studio globalement conscient de ces fichiers?
J'ai également essayé d'inclure le répertoire ci-dessus dans la variable path mais cela n'a rien changé.

En outre, il trouvera aléatoirement windows.h mais pas winresrc.h dans le même répertoire.

Edit:
C'était un problème avec ma machine. D'une manière ou d'une autre, Visual Studio pensait que mon SDK Windows était au mauvais endroit. Voir la réponse acceptée et les commentaires pour le correctif.

43
bastibe

Cette réponse ne concerne que les anciennes versions de Visual Studio - voir les réponses plus récentes pour les versions modernes.

Vous pouvez définir le chemin d'inclusion global de Visual Studio ici:

Tools/Options/Projects and Solutions/VC++ Directories/Include files

22
RichieHindle

La solution @RichieHindle est désormais obsolète à partir de Visual Studio 2012. Comme le mentionne maintenant l'invite du studio VS:

Les répertoires VC++ sont désormais disponibles sous forme de feuille de propriétés utilisateur ajoutée par défaut à tous les projets.

Pour définir un chemin d’inclusion, vous devez maintenant cliquer avec le bouton droit de la souris sur un projet et aller à:

Properties/VC++ Directories/General/Include Directories

Capture d'écran: enter image description here

60
stackunderflow

Pour reprendre les solutions de travail dans VisualStudio 2013 et 2015 également:

Ajouter un chemin d'accès au projet actuel uniquement

Dans Explorateur de solutions (une fenêtre de la palette de VisualStudio-mainwindow), ouvrez le menu contextuel du projet et choisissez Propriétés, puis dans le volet gauche. Dans la boîte de dialogue Pages de propriétés, développez Propriétés de configuration et sélectionnez Répertoires VC++. Des chemins d'inclusion ou de bibliothèque supplémentaires peuvent être spécifiés ici.

C'est ce que Stackunderflow et user1741137 disent dans les réponses ci-dessus. C'est ce que Microsoft explique dans MSDN aussi.

Ajouter automatiquement un chemin d'accès à chaque nouveau projet

C'est la question, que Jay Elston demande dans un commentaire ci-dessus et quelle est une question très évidente et brûlante à mes yeux, ce qui semble être sans réponse ici encore.

Il existe des moyens réguliers de le faire dans VisualStudio (voir CurlyBrace.com ), ce qui, selon mon expérience, ne fonctionne pas correctement. En ce sens qu'il ne fonctionne qu'une fois, et par la suite, il n'est plus extensible et nomore amovible. L’approche de Steve Wilkinson dans un autre fil proche de StackOverflow, éditer le fichier Microsoft-Factory-XML dans le répertoire 'program files' - est probablement un hack risqué, car Microsoft n’attend pas qu’elle y rencontrer quelque chose d'étranger. L'effet est potentiellement imprévisible. Eh bien, j'aime bien juger le risque peu, mais c'est quand même le meilleur moyen de rendre le travail de VisualStudio incompréhensible au moins pour quelqu'un d'autre.

Ce qui fonctionne bien comparé à, est l'édition du fichier User-XML correspondant:

C:\Utilisateurs\Nom d'utilisateur\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props

ou et

C:\Utilisateurs\Nom d'utilisateur\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.x64.user.props

Par exemple:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>C:\any-name\include;$(IncludePath)</IncludePath>
    <LibraryPath>C:\any-name\lib;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

Où le répertoire ‘C:\any-name\include’ sera ajouté au chemin d’inclusion actuel et le répertoire ‘C:\any-name\lib’ au chemin de la bibliothèque. Ici, nous pouvons le modifier précédemment dans un sens qui s’étend et se dissipe et le supprime tout, en supprimant le contenu intégral du tag.

C'est ce qui fait VisualStudio lui-même, le faire de la manière habituelle décrite par CurlyBrace . Comme dit, il n'est pas éditable dans la suite CurlyBrace , mais dans la manière d'édition XML, il l'est.

Pour plus d'informations, voir Brian Tyler @ MSDN-Blog 2009, certes pas très récent, mais toujours le lien vers lequel Microsoft crée un lien.

23
Pablo el Puro

Si vous essayez uniquement de modifier les chemins d'inclusion d'un projet et non de toutes les solutions, procédez comme suit dans Visual Studio 2008: Cliquez avec le bouton droit de la souris sur le nom du projet dans le Navigateur de solution. Dans le menu contextuel, sélectionnez Propriétés. Dans la boîte de dialogue des pages de propriétés, sélectionnez Propriétés de configuration-> C/C++/Général. Cliquez dans la zone de texte en regard du libellé "Fichiers à inclure supplémentaires" et recherchez le répertoire approprié. Sélectionnez OK.

Ce qui m'agace, c'est que certaines des réponses à la question initiale ne s'appliquent pas à la version de Visual Studio mentionnée.

2
user1741137

Pour utiliser Windows SDK avec succès, vous devez non seulement rendre les fichiers inclus disponibles pour vos projets, mais également les fichiers de bibliothèque et les exécutables (outils). Pour définir tous ces répertoires, vous devez utiliser WinSDK Configuration Tool .

2
Piotr Dobrogost