共用方式為


CppProperties.json 參考

開啟不使用 CMake 的資料夾項目可以在檔案中 CppProperties.json 儲存 IntelliSense 的項目組態設定。 (CMake 專案使用 檔案 CMakeSettings.json 。)組態包含名稱/值組,並定義 #include 路徑、編譯程序參數和其他參數。 如需如何在 Open Folder 專案中新增組態的詳細資訊,請參閱 開啟C++的資料夾專案。 下列各節摘要說明各種設定。 如需架構的完整描述,請流覽至 CppProperties_schema.json,其完整路徑會在開啟時 CppProperties.json ,於程式代碼編輯器頂端提供。

設定屬性

組態可以有下列任何屬性:

名稱 描述
inheritEnvironments 指定套用至此設定的環境。
name 將在 [C++組態] 下拉式清單中顯示的組態名稱
includePath 應該在包含路徑中指定之資料夾的逗號分隔清單(對應至 /I 大多數編譯程式)
defines 應該定義的巨集清單(對應至 /D 大部分編譯程式)
compilerSwitches 可能會影響 IntelliSense 行為的一或多個其他參數
forcedInclude 要自動包含在每個編譯單位中的標頭(對應至 /FI MSVC 或 -include clang)
undefines 要未定義的巨集清單(對應至 /U MSVC)
intelliSenseMode 要使用的 IntelliSense 引擎。 您可以為 MSVC、gcc 或 Clang 指定其中一個預先定義的架構特定變體。
environments 使用者定義變數集,其行為就像命令提示字元中的環境變數,並使用巨集存取 ${env.VARIABLE}

intelliSenseMode 值

當您開始輸入時,程式代碼編輯器會顯示可用的選項:

編輯器中 IntelliSense 彈出視窗的螢幕快照。

這個清單顯示支援的值:

  • 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

注意:只有舊版原因才支援 和 msvc-x64msvc-x86。 請改用 windows-msvc-* 變體。

預先定義的環境

Visual Studio 針對對應至對應開發人員命令提示字元的Microsoft C++提供下列預先定義的環境。 當您繼承其中一個環境時,可以使用全域屬性 env 搭配這個巨集語法來參考任何環境變數: ${env.VARIABLE}

變數名稱 描述
vsdev 預設 Visual Studio 環境
msvc_x86 使用 x86 工具對 x86 進行編譯
msvc_x64 使用 64 位元工具對 AMD64 進行編譯
msvc_arm 使用 x86 工具對 ARM 進行編譯
msvc_arm64 使用 x86 工具對 ARM64 進行編譯
msvc_x86_x64 使用 x86 工具對 AMD64 進行編譯
msvc_arm_x64 使用 64 位元工具對 ARM 進行編譯
msvc_arm64_x64 使用 64 位元工具對 ARM64 進行編譯

安裝 Linux 工作負載之後,即可使用下列環境從遠端鎖定 Linux 和 WSL:

變數名稱 描述
linux_x86 從遠端鎖定 x86 Linux
linux_x64 從遠端鎖定 x64 Linux
linux_arm 從遠端鎖定 ARM Linux

使用者定義環境

您可以選擇性地使用 environments 屬性,在全域或個別組態中 CppProperties.json 定義變數集。 這些變數的行為就像 Open Folder 項目內容中的環境變數一樣。 您可以使用此處定義語法tasks.vs.json的 和 launch.vs.json 之後存取它們${env.VARIABLE}。 不過,在 Visual Studio 內部使用的任何命令提示字元中,它們不一定設定為實際的環境變數。

Visual Studio 2019 16.4 版和更新版本:CppProperties.json 定義的組態特定變數會自動由偵錯目標和工作挑選,而不需要設定 inheritEnvironments。 偵錯目標會隨著您在 中指定的 CppProperties.json環境自動啟動。

Visual Studio 2019 16.3 版和更早版本: 當您取用環境時,即使環境定義為相同組態的一部分,您仍必須將其指定在 屬性中 inheritsEnvironments ; environment 屬性會指定環境的名稱。 下列範例示範在 MSYS2 安裝中啟用 GCC IntelliSense 的範例組態。 請注意組態如何定義及繼承 mingw_64 環境,以及屬性如何 includePath 存取 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"
        }
      ]
    }
  ]

當您在組態內定義 "environments" 屬性時,它會覆寫任何具有相同名稱的全域變數。

內建巨集

您可以存取下列位於 CppProperties.json 內部的內建巨集:

Macro 描述
${workspaceRoot} 工作區資料夾的完整路徑
${projectRoot} 放置所在 CppProperties.json 資料夾的完整路徑
${env.vsInstallDir} 安裝 Visual Studio 執行中實例的資料夾完整路徑

範例

如果您的專案有 include 資料夾,而且也包含 *windows.h* 和其他來自 Windows SDK 的常見標頭,您可能會想要使用下列包含來更新組 CppProperties.json 態檔:

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

注意

%WindowsSdkDir%%VCToolsInstallDir% 未設定為全域環境變數。 請確定您從定義這些變數的開發人員命令提示字元開始 devenv.exe 。 (在 Windows [開始] 選單中輸入 「developer」,以尋找開發人員命令提示字元快捷方式。

針對 IntelliSense 錯誤進行疑難排解

如果您未看到預期的 IntelliSense,您可以移至 [工具>選項>文字編輯器>C/C++][進一步>],並將 [啟用記錄] 設定true來進行疑難解答。 若要從 開始,請嘗試將 [記錄層級] 設定為 5,並將 [記錄篩選] 設定為 8。

[選項] 對話框中 [診斷記錄設定] 的螢幕快照。

輸出會管線傳送至 [輸出] 視窗 ,當您選擇 [顯示輸出來源:Visual C++ 記錄檔時,會顯示輸出。 輸出包含 IntelliSense 嘗試使用的實際 Include 路徑清單。 如果路徑不符合 中的 CppProperties.json路徑,請嘗試關閉資料夾,並刪除 .vs 包含快取瀏覽數據的子資料夾。

若要針對遺漏 Include 路徑所造成的 IntelliSense 錯誤進行疑難解答,請開啟 [錯誤清單] 索引標籤,然後將其輸出篩選為 「僅限 IntelliSense」,錯誤碼 E1696 「無法 開放原始碼 檔案...」。