Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Öppna mappprojekt som inte använder CMake kan lagra projektkonfigurationsinställningar för IntelliSense i en CppProperties.json fil. (CMake-projekt använder en CMakeSettings.json fil.) En konfiguration består av namn/värde-par och definierar #include sökvägar, kompilatorväxlar och andra parametrar. Mer information om hur du lägger till konfigurationer i ett projekt med öppen mapp finns i Öppna mappprojekt för C++. I följande avsnitt sammanfattas de olika inställningarna. Om du vill ha en fullständig beskrivning av schemat går du till CppProperties_schema.json, vars fullständiga sökväg anges överst i kodredigeraren när CppProperties.json den är öppen.
Konfigurationsegenskaper
En konfiguration kan ha någon av följande egenskaper:
| Namn | Beskrivning |
|---|---|
inheritEnvironments |
Anger vilka miljöer som gäller för den här konfigurationen. |
name |
Konfigurationsnamnet som visas i listrutan C++-konfiguration |
includePath |
En kommaavgränsad lista över mappar som ska anges i inkluderingssökvägen (motsvarar /I för de flesta kompilatorer) |
defines |
Listan över makron som ska definieras (mappar till /D för de flesta kompilatorer) |
compilerSwitches |
En eller flera ytterligare växlar som kan påverka IntelliSense-beteendet |
forcedInclude |
Rubrik som ska ingå automatiskt i varje kompileringsenhet (mappar till /FI för MSVC eller -include för clang) |
undefines |
Listan över makron som ska avdefinieras och som mappar till /U för MSVC |
intelliSenseMode |
IntelliSense-motorn som ska användas. Du kan ange en av de fördefinierade arkitekturspecifika varianterna för MSVC, gcc eller Clang. |
environments |
Användardefinierade uppsättningar med variabler som fungerar som miljövariabler i en kommandotolk och som används med ${env.VARIABLE} makrot. |
intelliSenseMode-värden
Kodredigeraren visar tillgängliga alternativ när du börjar skriva:
Den här listan visar de värden som stöds:
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
Obs! Värdena msvc-x86 och msvc-x64 stöds endast av äldre skäl. Använd varianterna windows-msvc-* i stället.
Fördefinierade miljöer
Visual Studio tillhandahåller följande fördefinierade miljöer för Microsoft C++ som mappas till motsvarande kommandotolk för utvecklare. När du ärver en av dessa miljöer kan du referera till någon av miljövariablerna med hjälp av den globala egenskapen env med den här makrosyntaxen: ${env.VARIABLE}.
| Variabelnamn | Beskrivning |
|---|---|
vsdev |
Visual Studio-standardmiljön |
msvc_x86 |
Kompilera för x86 med x86-verktyg |
msvc_x64 |
Kompilera för AMD64 med 64-bitarsverktyg |
msvc_arm |
Kompilera för ARM med x86-verktyg |
msvc_arm64 |
Kompilera för ARM64 med x86-verktyg |
msvc_x86_x64 |
Kompilera för AMD64 med x86-verktyg |
msvc_arm_x64 |
Kompilera för ARM med 64-bitarsverktyg |
msvc_arm64_x64 |
Kompilera för ARM64 med 64-bitarsverktyg |
När Linux-arbetsbelastningen har installerats är följande miljöer tillgängliga för fjärranslutning till Linux och WSL:
| Variabelnamn | Beskrivning |
|---|---|
linux_x86 |
Mål x86 Linux på distans |
linux_x64 |
Inrikta x64 Linux fjärranslutet |
linux_arm |
Rikta in sig på ARM Linux-system på distans |
Användardefinierade miljöer
Du kan också använda environments egenskapen för att definiera uppsättningar variabler i CppProperties.json antingen globalt eller per konfiguration. Dessa variabler fungerar som miljövariabler i kontexten för ett projekt med öppen mapp. Du kan komma åt dem med syntaxen ${env.VARIABLE} från tasks.vs.json och launch.vs.json efter att de har definierats här. De anges dock inte nödvändigtvis som faktiska miljövariabler i någon kommandotolk som Visual Studio använder internt.
Visual Studio 2019 version 16.4 och senare: Konfigurationsspecifika variabler som definieras i CppProperties.json hämtas automatiskt av felsökningsmål och uppgifter utan att du behöver ange inheritEnvironments. Felsökningsmål startas automatiskt med den miljö som du anger i CppProperties.json.
Visual Studio 2019 version 16.3 och tidigare: När du använder en miljö måste du ange den i inheritsEnvironments egenskapen även om miljön definieras som en del av samma konfiguration. environment Egenskapen anger namnet på miljön. I följande exempel visas en exempelkonfiguration för att aktivera IntelliSense för GCC i en MSYS2-installation. Observera hur konfigurationen både definierar och ärver mingw_64 miljön och hur includePath egenskapen kan komma åt variabeln INCLUDE .
"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"
}
]
}
]
När du definierar en "environments" egenskap i en konfiguration åsidosätter den alla globala variabler som har samma namn.
Inbyggda makron
Du har åtkomst till följande inbyggda makron i CppProperties.json:
| Makro | Beskrivning |
|---|---|
${workspaceRoot} |
Den fullständiga sökvägen till arbetsytans mapp |
${projectRoot} |
Den fullständiga sökvägen till mappen där CppProperties.json är placerad |
${env.vsInstallDir} |
Den fullständiga sökvägen till mappen där den instans av Visual Studio som körs är installerad |
Exempel
Om ditt projekt har en mapp för inkluderingar och även innehåller *windows.h* och andra vanliga huvuden från Windows SDK, kanske du vill uppdatera CppProperties.json konfigurationsfilen med följande inkluderingsdirektiv:
{
"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"
]
}
]
}
Anmärkning
%WindowsSdkDir% och %VCToolsInstallDir% anges inte som globala miljövariabler. Se till att du börjar devenv.exe från en kommandotolk för utvecklare som definierar dessa variabler. (Skriv "utvecklare" på Start-menyn i Windows för att hitta en genväg till kommandotolken för utvecklare.)
Felsöka IntelliSense-fel
Om du inte ser den IntelliSense som du förväntar dig kan du felsöka genom att gå till Verktyg>Alternativ>Textredigerare>C/C++>Avancerat och ange Aktivera loggning till true. Börja med att prova att ange loggningsnivå till 5 och loggningsfilter till 8.
Utdata skickas till utdatafönstret och visas när du väljer Visa utdata från: Visuell C++-logg. Utdata innehåller bland annat listan över de faktiska inkluderingssökvägar som IntelliSense försöker använda. Om sökvägarna inte matchar dem i CppProperties.jsonkan du försöka stänga mappen och ta bort undermappen .vs som innehåller cachelagrade webbdata.
Om du vill felsöka IntelliSense-fel som orsakas av sökvägar som saknas öppnar du fliken Fellista och filtrerar sedan utdata till "Endast IntelliSense" och felkoden E1696 "kan inte öppna källfilen ...".