不使用 CMake 的資料夾項目可以將 IntelliSense 的組態設定儲存在 CppProperties.json 檔案中。 (CMake 專案使用CMakeSettings.json檔案。)組態包含名稱/值組,並定義#include路徑、編譯器選項和其他參數。 如需有關如何在 Open Folder 專案中新增組態的更多資訊,請參閱 適用於 C++ 的 Open Folder 專案。 下列各節摘要說明各種設定。 如需架構的完整描述,請流覽至 CppProperties_schema.json,其完整路徑會在開啟時 CppProperties.json ,於程式代碼編輯器頂端提供。
設定屬性
組態可以有下列任何屬性:
| 名稱 | 描述 |
|---|---|
inheritEnvironments |
指定套用至此設定的環境。 |
name |
將會在 C++ 設定的下拉式選單中顯示的設定名稱 |
includePath |
應該在包含路徑中指定的資料夾,以逗號分隔的清單(對應於大多數編譯器的 /I) |
defines |
應該定義的巨集清單(對應至 /D 大部分編譯程式) |
compilerSwitches |
一或多個可能會影響 IntelliSense 行為的其他開關 |
forcedInclude |
要自動包含在每個編譯單位中的標題檔(對應到 MSVC 的 /FI 或 clang 的 -include) |
undefines |
要取消定義的巨集清單(映射為 /U 對於 MSVC) |
intelliSenseMode |
要使用的 IntelliSense 引擎。 您可以為 MSVC、gcc 或 Clang 指定其中一個預先定義的架構特定變體。 |
environments |
使用者定義變數集,其行為就像命令提示字元中的環境變數,並透過 ${env.VARIABLE} 巨集進行存取。 |
intelliSenseMode 參數值
當您開始輸入時,程式代碼編輯器會顯示可用的選項:
這個清單顯示支援的值:
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
注意:值msvc-x86和msvc-x64僅因相容性原因而支援。 請改用 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 項目內容中的環境變數一樣。 您可以在此處定義後,使用${env.VARIABLE}語法從tasks.vs.json和launch.vs.json存取它們。 不過,在 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 內部的內建巨集:
| 巨集 | 描述 |
|---|---|
${workspaceRoot} |
工作區資料夾的完整路徑 |
${projectRoot} |
放置所在 CppProperties.json 資料夾的完整路徑 |
${env.vsInstallDir} |
安裝 Visual Studio 執行中實例的資料夾完整路徑 |
範例
如果您的專案有一個 include 資料夾,且也包含來自 Windows SDK 的 *windows.h* 和其他常見標頭,您可能會想要用下列包含項目來更新您的 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++] > [進階],並將 [啟用記錄] 設為 [開]來進行疑難排解。 若要從 開始,請嘗試將 [記錄層級] 設定為 5,並將 [記錄篩選] 設定為 8。
輸出會傳送至 [輸出] 視窗,當您選擇 顯示輸出來源:Visual C++ 日誌時,輸出便會顯示。 輸出包含 IntelliSense 嘗試使用的實際 Include 路徑清單,等等。 如果路徑不符合 中的 CppProperties.json路徑,請嘗試關閉資料夾,並刪除 .vs 包含快取瀏覽數據的子資料夾。
若要針對遺漏 Include 路徑所造成的 IntelliSense 錯誤進行疑難解答,請開啟 [錯誤清單] 索引標籤,然後將其輸出篩選為 「僅限 IntelliSense」,錯誤碼 E1696 「無法 開放原始碼 檔案...」。