Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les projets de type dossier qui n'utilisent pas CMake peuvent stocker les paramètres de configuration du projet pour IntelliSense dans un fichier CppProperties.json. (Les projets CMake utilisent un fichier CMakeSettings.json.) Une configuration se compose de paires nom/valeur et définit les chemins d'inclusion #include, les options du compilateur et d'autres paramètres. Pour plus d’informations sur l’ajout de configurations dans un projet Open Folder, consultez Open Folder projects for C++. Les sections suivantes résument les différents paramètres. Pour obtenir une description complète du schéma, accédez à CppProperties_schema.json, dont le chemin d’accès complet est donné en haut de l’éditeur de code lorsqu’il CppProperties.json est ouvert.
Propriétés de configuration
Une configuration peut avoir l’une des propriétés suivantes :
| Nom | Descriptif |
|---|---|
inheritEnvironments |
Spécifie les environnements qui s’appliquent à cette configuration. |
name |
Nom de configuration qui s’affiche dans la liste déroulante de configuration C++ |
includePath |
Liste séparée par des virgules de dossiers qui doivent être spécifiés dans le chemin d’accès include (correspondant à /I pour la plupart des compilateurs) |
defines |
Liste des macros qui devraient être définies (correspond à /D pour la plupart des compilateurs) |
compilerSwitches |
Un ou plusieurs commutateurs supplémentaires pouvant influencer le comportement d’IntelliSense |
forcedInclude |
En-tête à inclure automatiquement dans chaque unité de compilation (correspond à /FI pour MSVC ou -include pour clang) |
undefines |
La liste des macros à ne pas définir (mappées à /U pour MSVC) |
intelliSenseMode |
Moteur IntelliSense à utiliser Vous pouvez spécifier l’une des variantes spécifiques à l’architecture prédéfinies pour MSVC, gcc ou Clang. |
environments |
Les ensembles de variables définis par l’utilisateur qui se comportent comme des variables d’environnement dans une invite de commandes sont accessibles avec la ${env.VARIABLE} macro. |
Valeurs intelliSenseMode
L’éditeur de code affiche les options disponibles lorsque vous commencez à taper :
Cette liste affiche les valeurs prises en charge :
windows-msvc-x86windows-msvc-x64windows-msvc-armwindows-msvc-arm64android-clang-x86android-clang-x64android-clang-armandroid-clang-arm64ios-clang-x86ios-clang-x64ios-clang-armios-clang-arm64windows-clang-x86windows-clang-x64windows-clang-armwindows-clang-arm64linux-gcc-x86linux-gcc-x64linux-gcc-arm
Remarque : Les valeurs msvc-x86 et msvc-x64 sont prises en charge uniquement pour des raisons héritées. Utilisez plutôt les windows-msvc-* variantes.
Environnements prédéfinis
Visual Studio fournit les environnements prédéfinis suivants pour Microsoft C++ qui correspondent à l’invite de commandes développeur correspondante. Lorsque vous héritez de l’un de ces environnements, vous pouvez faire référence à l’une des variables d’environnement à l’aide de la propriété env globale avec cette syntaxe de macro : ${env.VARIABLE}.
| Nom de la variable | Descriptif |
|---|---|
vsdev |
Environnement Visual Studio par défaut |
msvc_x86 |
Compiler pour x86 à l’aide d’outils x86 |
msvc_x64 |
Compiler pour AMD64 à l’aide d’outils 64 bits |
msvc_arm |
Compiler pour ARM à l’aide d’outils x86 |
msvc_arm64 |
Compiler pour ARM64 à l’aide d’outils x86 |
msvc_x86_x64 |
Compiler pour AMD64 à l’aide d’outils x86 |
msvc_arm_x64 |
Compiler pour ARM à l’aide d’outils 64 bits |
msvc_arm64_x64 |
Compiler pour ARM64 à l’aide d’outils 64 bits |
Quand la charge de travail Linux est installée, les environnements suivants sont disponibles pour cibler à distance Linux et WSL :
| Nom de la variable | Descriptif |
|---|---|
linux_x86 |
Cibler Linux x86 à distance |
linux_x64 |
Cibler Linux x64 à distance |
linux_arm |
Cibler Linux ARM à distance |
Environnements définis par l’utilisateur
Vous pouvez éventuellement utiliser la environments propriété pour définir des ensembles de variables dans le CppProperties.json monde entier ou par configuration. Ces variables se comportent comme des variables d’environnement dans le contexte d’un projet Open Folder. Vous pouvez y accéder avec la syntaxe ${env.VARIABLE} à partir de tasks.vs.json et launch.vs.json après leur définition ici. Toutefois, elles ne sont pas nécessairement définies en tant que variables d’environnement réelles dans une invite de commandes que Visual Studio utilise en interne.
Visual Studio 2019 version 16.4 et ultérieure : les variables spécifiques à la configuration définies dans CppProperties.json sont automatiquement récupérées par les cibles et tâches de débogage sans avoir à définir inheritEnvironments. Les cibles de débogage sont lancées automatiquement avec l’environnement que vous spécifiez dans CppProperties.json.
Visual Studio 2019 version 16.3 et antérieure : lorsque vous utilisez un environnement, vous devez le spécifier dans la inheritsEnvironments propriété même si l’environnement est défini dans le cadre de la même configuration ; la environment propriété spécifie le nom de l’environnement. L’exemple suivant montre un exemple de configuration permettant d’activer IntelliSense pour GCC dans une installation MSYS2. Notez comment la configuration définit et hérite de l’environnement mingw_64 et comment la includePath propriété peut accéder à la INCLUDE variable.
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**",
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};",
"environment": "mingw_64"
}
]
}
]
Lorsque vous définissez une propriété à l’intérieur d’une "environments" configuration, elle remplace toutes les variables globales qui ont les mêmes noms.
Macros intégrées
Vous avez accès aux macros intégrées suivantes à l’intérieur de CppProperties.json :
| Macro | Descriptif |
|---|---|
${workspaceRoot} |
Chemin d’accès complet au dossier de l’espace de travail |
${projectRoot} |
Chemin d’accès complet au dossier où CppProperties.json est placé |
${env.vsInstallDir} |
Chemin d’accès complet au dossier dans lequel l’instance en cours d’exécution de Visual Studio est installée |
Exemple
Si votre projet comporte un dossier include et inclut également *windows.h * ainsi que d'autres en-têtes courants du Kit de développement logiciel (SDK) Windows, vous pouvez mettre à jour votre fichier de configuration CppProperties.json avec les éléments suivants :
{
"configurations": [
{
"name": "Windows",
"includePath": [
// local include folder
"${workspaceRoot}\\include",
// Windows SDK and CRT headers
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\ucrt",
"${env.NETFXSDKDir}\\include\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\shared",
"${env.VCToolsInstallDir}\\include"
]
}
]
}
Remarque
%WindowsSdkDir% et %VCToolsInstallDir% ne sont pas définis en tant que variables d’environnement globales. Veillez à commencer devenv.exe à partir d’une invite de commandes développeur qui définit ces variables. (Tapez « développeur » dans le menu Démarrer de Windows pour rechercher un raccourci vers l'invite de commandes pour développeurs.)
Corriger les erreurs IntelliSense
Si vous ne voyez pas l'IntelliSense que vous attendez, vous pouvez résoudre les problèmes en accédant à Outils>Options>Editeur de texte>C/C++>Avancé et en définissant Activer la journalisation à true. Pour commencer, essayez de définir le niveau de journalisation sur 5 et les filtres de journalisation sur 8.
La sortie est redirigée vers la fenêtre de sortie et est visible lorsque vous choisissez Afficher la sortie de : Journal Visual C++. La sortie contient, entre autres, la liste des chemins d’inclusion réels qu'IntelliSense essaie d’utiliser. Si les chemins d’accès ne correspondent pas à ceux du CppProperties.jsondossier, essayez de fermer le dossier et de supprimer le .vs sous-dossier qui contient des données de navigation mises en cache.
Pour résoudre les erreurs IntelliSense provoquées par des chemins include manquants, ouvrez l'onglet Liste des erreurs, puis filtrez sa sortie sur « IntelliSense uniquement » et le code d’erreur E1696 « ne peut pas ouvrir le fichier source ... ».