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 值
當您開始輸入時,程式碼編輯器會顯示可用的選項:
此清單顯示支援的值:
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-x64
值 msvc-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 「無法開放原始碼檔案...」。