Sdílet prostřednictvím


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:

Snímek obrazovky s automaticky otevíranou obrazovkou IntelliSense v editoru

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.jsonkteré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.htaké * 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.

Snímek obrazovky s nastavením protokolování diagnostiky v dialogovém okně Možnosti

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.jsonzkuste 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...".