CppProperties.json
odkaz
Projekty open Folder, které nepoužívají CMake, můžou ukládat nastavení konfigurace projektu pro IntelliSense v CppProperties.json
souboru. (Projekty CMake používají CMakeSettings.json
soubor.) Konfigurace se skládá z párů název/hodnota a definuje #include cesty, přepínače kompilátoru a další parametry. Další informace o tom, jak přidat konfigurace v projektu Otevřít složku, naleznete v tématu Projekty otevřít složku pro C++. Následující části shrnují různá nastavení. Úplný popis schématu najdete v části CppProperties_schema.json, jejíž úplná cesta je uvedena v horní části editoru kódu při CppProperties.json
otevření.
Vlastnosti konfigurace
Konfigurace může mít některou z následujících vlastností:
Název | Popis |
---|---|
inheritEnvironments |
Určuje, která prostředí se na tuto konfiguraci vztahují. |
name |
Název konfigurace, který se zobrazí v rozevíracím seznamu konfigurace C++ |
includePath |
Seznam složek oddělených čárkami, které by se měly zadat v cestě include (mapuje se na /I většinu kompilátorů) |
defines |
Seznam maker, která by měla být definována (mapuje se na /D většinu kompilátorů) |
compilerSwitches |
Jeden nebo více dalších přepínačů, které můžou ovlivnit chování technologie IntelliSense |
forcedInclude |
Hlavička, která se má automaticky zahrnout do každé kompilační jednotky (mapuje se na /FI MSVC nebo -include pro clang) |
undefines |
Seznam maker, která se mají nedefinovat (mapuje se na /U MSVC) |
intelliSenseMode |
Modul IntelliSense, který se má použít. Můžete zadat jednu z předdefinovaných variant specifických pro architekturu MSVC, gcc nebo Clang. |
environments |
Uživatelem definované sady proměnných, které se chovají jako proměnné prostředí v příkazovém řádku a jsou přístupné pomocí ${env.VARIABLE} makra. |
IntelliSenseMode – hodnoty
Když začnete psát, editor kódu zobrazí dostupné možnosti:
Tento seznam zobrazuje podporované hodnoty:
windows-msvc-x86
windows-msvc-x64
windows-msvc-arm
windows-msvc-arm64
android-clang-x86
android-clang-x64
android-clang-arm
android-clang-arm64
ios-clang-x86
ios-clang-x64
ios-clang-arm
ios-clang-arm64
windows-clang-x86
windows-clang-x64
windows-clang-arm
windows-clang-arm64
linux-gcc-x86
linux-gcc-x64
linux-gcc-arm
Poznámka: Hodnoty msvc-x86
a msvc-x64
jsou podporovány pouze ze starších důvodů. windows-msvc-*
Místo toho použijte varianty.
Předdefinovaná prostředí
Visual Studio poskytuje následující předdefinovaná prostředí pro Microsoft C++, která se mapuje na odpovídající příkazový řádek pro vývojáře. Když zdědíte jedno z těchto prostředí, můžete odkazovat na libovolnou z proměnných prostředí pomocí globální vlastnosti env
s touto syntaxí makra: ${env.VARIABLE}
.
Název proměnné | Popis |
---|---|
vsdev |
Výchozí prostředí sady Visual Studio |
msvc_x86 |
Kompilace pro x86 pomocí nástrojů x86 |
msvc_x64 |
Kompilace pro AMD64 pomocí 64bitových nástrojů |
msvc_arm |
Kompilace pro ARM pomocí nástrojů x86 |
msvc_arm64 |
Kompilace pro ARM64 pomocí nástrojů x86 |
msvc_x86_x64 |
Kompilace pro AMD64 pomocí nástrojů x86 |
msvc_arm_x64 |
Kompilace pro ARM pomocí 64bitových nástrojů |
msvc_arm64_x64 |
Kompilace pro ARM64 pomocí 64bitových nástrojů |
Při instalaci linuxové úlohy jsou k dispozici následující prostředí pro vzdálené cílení na Linux a WSL:
Název proměnné | Popis |
---|---|
linux_x86 |
Vzdáleně cílit na x86 Linux |
linux_x64 |
Vzdáleně cílit na x64 Linux |
linux_arm |
Vzdálené cílení ARM na Linux |
Uživatelsky definovaná prostředí
Volitelně můžete vlastnost použít environments
k definování sad proměnných v CppProperties.json
globální nebo konfiguraci. Tyto proměnné se chovají jako proměnné prostředí v kontextu projektu Open Folder. K nim můžete přistupovat pomocí ${env.VARIABLE}
syntaxe z tasks.vs.json
a launch.vs.json
po jejich definování. Nemusí se ale nutně nastavovat jako skutečné proměnné prostředí v žádném příkazovém řádku, který Visual Studio interně používá.
Visual Studio 2019 verze 16.4 a novější: Proměnné specifické pro konfiguraci definované v CppProperties.json
sadě se automaticky vyberou podle cílů ladění a úkolů bez nutnosti nastavit inheritEnvironments
. Cíle ladění se spustí automaticky s prostředím, ve CppProperties.json
kterém zadáte .
Visual Studio 2019 verze 16.3 a starší: Když prostředí používáte, musíte ho zadat ve inheritsEnvironments
vlastnosti, i když je prostředí definováno jako součást stejné konfigurace; environment
vlastnost určuje název prostředí. Následující příklad ukazuje ukázkovou konfiguraci pro povolení technologie IntelliSense pro GCC v instalaci MSYS2. Všimněte si, jak konfigurace definuje a dědí mingw_64
prostředí a jak includePath
má vlastnost přístup k INCLUDE
proměnné.
"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"
}
]
}
]
Když definujete "environments"
vlastnost uvnitř konfigurace, přepíše všechny globální proměnné, které mají stejné názvy.
Integrovaná makra
Máte přístup k následujícím předdefinovaných makrem uvnitř CppProperties.json
:
Makro | Popis |
---|---|
${workspaceRoot} |
Úplná cesta ke složce pracovního prostoru |
${projectRoot} |
Úplná cesta ke složce, do které CppProperties.json se umístí |
${env.vsInstallDir} |
Úplná cesta ke složce, ve které je nainstalovaná spuštěná instance sady Visual Studio |
Příklad
Pokud má váš projekt složku include a obsahuje *windows.h
také * a další běžné hlavičky ze sady Windows SDK, můžete konfigurační soubor aktualizovat CppProperties.json
následujícím postupem:
{
"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"
]
}
]
}
Poznámka:
%WindowsSdkDir%
a %VCToolsInstallDir%
nejsou nastaveny jako globální proměnné prostředí. Nezapomeňte začít devenv.exe
z příkazového řádku pro vývojáře, který definuje tyto proměnné. (Zadáním "developer" v nabídce Start systému Windows vyhledejte zástupce příkazového řádku pro vývojáře.)
Řešení chyb IntelliSense
Pokud nevidíte technologii IntelliSense, kterou očekáváte, můžete řešit potíže tak, že přejdete do textového editoru>Možností>nástroje>C/C++>Advanced a nastavíte povolit protokolování do .true
Začněte tím, že zkusíte nastavit úroveň protokolování na 5 a filtry protokolování na 8.
Výstup se předá do okna Výstup a je viditelný, když zvolíte Zobrazit výstup: Protokol Visual C++. Výstup obsahuje mimo jiné seznam skutečných cest zahrnutí, které se IntelliSense pokouší použít. Pokud se cesty neshodují s cestami, CppProperties.json
zkuste zavřít složku a odstranit .vs
podsložku, která obsahuje data procházení v mezipaměti.
Pokud chcete vyřešit chyby IntelliSense způsobené chybějícími cestami k zahrnutí, otevřete kartu Seznam chyb a vyfiltrujte jeho výstup pouze na IntelliSense a kód chyby E1696 "nemůže otevřít zdrojový soubor...".