Megosztás:


CppProperties.json referencia

Azok az Open Folder projektek, amelyek nem használnak CMake-et, egy CppProperties.json fájlban tárolhatják az IntelliSense-hez szükséges projektkonfigurációs beállításokat. (A CMake-projektek fájlokat CMakeSettings.json használnak.) A konfiguráció név-érték párokból áll, és meghatározza #include elérési utakat, fordítókapcsolókat és egyéb paramétereket. A konfigurációk Open Folder-projektekben való hozzáadásáról további információt a C++ mappaprojektek megnyitása című témakörben talál. A következő szakaszok összefoglalják a különböző beállításokat. A séma teljes leírásához keresse meg a CppProperties_schema.json, amelynek teljes elérési útja a kódszerkesztő tetején található, amikor CppProperties.json meg van nyitva.

Konfigurációs tulajdonságok

A konfigurációk a következő tulajdonságok bármelyikével rendelkezhetnek:

Név Leírás
inheritEnvironments Meghatározza, hogy mely környezetek vonatkoznak erre a konfigurációra.
name A C++ konfigurációs legördülő menüben megjelenő konfigurációnév
includePath Vesszővel elválasztott mappalista, amelyet meg kell adni az include útvonalban (a legtöbb fordító esetében a /I-hoz illeszkedik)
defines A definiálandó makrók listája (a legtöbb fordítóhoz /D megfelel)
compilerSwitches Egy vagy több további kapcsoló, amely befolyásolhatja az IntelliSense viselkedését
forcedInclude Az összes fordítási egységbe automatikusan belefoglalandó fejléc (az MSVC-hez /FI vagy -include a clang-hez készült térképek)
undefines A nem definiálandó makrók listája (az MSVC-hez /U készült térképek)
intelliSenseMode A használni kívánt IntelliSense motor. Megadhatja az MSVC, a gcc vagy a Clang előre definiált architektúraspecifikus változatait.
environments A parancssorban a környezeti változókhoz hasonlóan viselkedő és a ${env.VARIABLE} makróval elérhető, felhasználó által definiált változókészletek.

intelliSenseMode értékek

A kódszerkesztő a gépelés megkezdésekor az elérhető lehetőségeket jeleníti meg:

Képernyőkép az IntelliSense előugró ablakáról a szerkesztőben.

Ez a lista a támogatott értékeket jeleníti meg:

  • 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

Megjegyzés: Az értékek msvc-x86msvc-x64 csak örökölt okokból támogatottak. Használja inkább a windows-msvc-* változatokat.

Előre definiált környezetek

A Visual Studio az alábbi előre definiált környezeteket biztosítja a Microsoft C++ számára, amelyek megfeleltetik a megfelelő fejlesztői parancssort. Ha ezen környezetek egyikét örökli, a környezeti változók bármelyikére hivatkozhat a globális tulajdonság env ezzel a makrószintaxissal: ${env.VARIABLE}.

Változó neve Leírás
vsdev Az alapértelmezett Visual Studio-környezet
msvc_x86 Fordítás x86-hoz x86-eszközökkel
msvc_x64 Fordítás AMD64-hez 64 bites eszközökkel
msvc_arm Fordítás ARM-re x86 eszközökkel
msvc_arm64 Fordítás ARM64-hez x86-eszközökkel
msvc_x86_x64 Fordítás AMD64-hez x86-eszközökkel
msvc_arm_x64 Fordítás ARM-hez 64 bites eszközökkel
msvc_arm64_x64 Fordítás ARM64-hez 64 bites eszközökkel

A Linux számítási feladat telepítésekor a következő környezetek érhetők el a Linux és a WSL távoli célzásához:

Változó neve Leírás
linux_x86 Az x86 Linux távoli célzása
linux_x64 Célozza meg az x64 Linux rendszert távolról
linux_arm Arm Linux távoli megcélzása

Felhasználó által definiált környezetek

Lehetőség szerint a environments tulajdonságot használhatja változókészletek CppProperties.json globálisan vagy konfigurációnként történő meghatározására. Ezek a változók úgy viselkednek, mint a környezeti változók egy Nyitott mappa projekt kontextusában. A ${env.VARIABLE} szintaxissal tasks.vs.json és launch.vs.json elérheti őket, miután itt definiálták őket. A Visual Studio által belsőleg használt parancssorokban azonban nem feltétlenül vannak tényleges környezeti változókként beállítva.

Visual Studio 2019 16.4-es és újabb verzió: A konfigurációspecifikus változókat CppProperties.json a rendszer automatikusan felveszi a hibakeresési célokkal és feladatokkal anélkül, hogy be kellene állítania inheritEnvironments. A hibakeresési célok automatikusan elindulnak a megadott CppProperties.jsonkörnyezettel.

Visual Studio 2019 16.3-s és korábbi verzió: Amikor környezetet használ, akkor is meg kell adnia azt a inheritsEnvironments tulajdonságban, még akkor is, ha a környezet ugyanannak a konfigurációnak a részeként van definiálva; a environment tulajdonság a környezet nevét adja meg. Az alábbi példa egy mintakonfigurációt mutat be, amely lehetővé teszi az IntelliSense for GCC használatát egy MSYS2-telepítésben. Figyelje meg, hogy a konfiguráció hogyan határozza meg és örökli a mingw_64 környezetet, és hogyan fér hozzá a includePath tulajdonság a INCLUDE változóhoz.

"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"
        }
      ]
    }
  ]

Ha egy tulajdonságot egy "environments" konfiguráción belül határoz meg, az felülírja az azonos nevű globális változókat.

Beépített makrók

A következő beépített makrókat érheti el:CppProperties.json

Makró Leírás
${workspaceRoot} A munkaterület mappájának teljes elérési útja
${projectRoot} Annak a mappának a teljes elérési útja, amelyben a CppProperties.json található
${env.vsInstallDir} Annak a mappának a teljes elérési útja, amelyben a Visual Studio futó példánya telepítve van

példa

Ha a projekt tartalmaz egy include mappát, és a Windows SDK-ből *-t és más gyakori fejléceket is tartalmaz, érdemes lehet frissítenie a *windows.h konfigurációs fájlt a következőkkel:

{
  "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"
      ]
    }
  ]
}

Megjegyzés:

%WindowsSdkDir% és %VCToolsInstallDir% nem globális környezeti változóként vannak beállítva. Győződjön meg arról, hogy egy fejlesztői parancssorból indul devenv.exe ki, amely meghatározza ezeket a változókat. (A Fejlesztői parancssor parancsikonjának megkereséséhez írja be a "fejlesztő" szót a Windows Start menübe.)

IntelliSense-hibák elhárítása

Ha nem látja a várt IntelliSense-t, hibaelhárításhoz lépjen az Eszközök>beállításai>szövegszerkesztő>C/C++>Speciális elemére, és állítsa be a Naplózástrueengedélyezése lehetőséget. Első lépésként próbálja meg 5-ösre állítani a naplózási szintet , a naplózási szűrőket pedig 8-ra.

Képernyőkép a Diagnosztikai naplózás beállításairól a Beállítások párbeszédpanelen.

A kimenet a Kimeneti ablakba van csövezve, és akkor jelenik meg, ha a Kimenet megjelenítése: Visual C++ Napló lehetőséget választja. A kimenet tartalmazza többek között az IntelliSense által használni kívánt tényleges elérési utak listáját. Ha az elérési utak nem egyeznek a CppProperties.json-ban megadottakkal, próbálja meg bezárni a mappát, és törölje a .vs almappát, amely gyorsítótárazott böngészési adatokat tartalmaz.

A hiányzó elérési utakból eredő IntelliSense-hibák elhárításához nyissa meg a Hibalista lapot, majd szűrje a kimenetét "csak IntelliSense" és E1696 hibakód "nem tudja megnyitni a forrásfájlt ..." értékre.