c_cpp_properties.json 參考
本文說明 c_cpp_properties.json
設定檔的結構描述。
想要開始設定您的專案嗎?請參閱設定 Intellisense。如需變更這些設定的詳細資訊,請參閱自訂預設設定。
變數範例
請注意,這是一個包含所有欄位的範例。您不需要在 c_cpp_properties.json
檔案中指定所有欄位。擴充功能會自動填入任何遺漏欄位的預設值。
{
"env": {
"myIncludePath": ["${workspaceFolder}/include", "${workspaceFolder}/src"],
"myDefines": ["DEBUG", "MY_FEATURE=1"]
},
"configurations": [
{
"name": "Linux",
"compilerPath": "/usr/bin/gcc",
"compilerArgs": ["-m32"],
"intelliSenseMode": "linux-gcc-x86",
"includePath": ["${myIncludePath}", "/usr/include"],
"defines": ["${myDefines}"],
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"configurationProvider": "ms-vscode.cmake-tools",
"forcedInclude": ["${workspaceFolder}/common.h"],
"compileCommands": "${workspaceFolder}/build/compile_commands.json",
"dotConfig": "${workspaceFolder}/.config",
"mergeConfigurations": true,
"customConfigurationVariables": {
"myVar": "myvalue"
},
"browse": {
"path": ["${myIncludePath}", "/usr/include", "${workspaceFolder}"],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "${workspaceFolder}/.vscode/browse.vc.db"
}
},
{
"name": "Mac",
"compilerPath": "/usr/bin/clang",
"intelliSenseMode": "macos-clang-x64",
"includePath": ["${myIncludePath}"],
"defines": ["${myDefines}"],
"cStandard": "c11",
"cppStandard": "c++17",
"macFrameworkPath": ["/System/Library/Frameworks", "/Library/Frameworks"],
"browse": {
"path": ["${myIncludePath}", "${workspaceFolder}"]
}
},
{
"name": "Win32",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe",
"intelliSenseMode": "windows-msvc-x64",
"includePath": ["${myIncludePath}"],
"defines": ["${myDefines}", "_WINDOWS"],
"cStandard": "c17",
"cppStandard": "c++20",
"windowsSdkVersion": "10.0.19041.0",
"browse": {
"path": ["${myIncludePath}", "${workspaceFolder}"]
}
}
],
"version": 4,
"enableConfigurationSquiggles": true
}
最上層屬性
-
env
使用者定義變數的陣列,這些變數可透過標準環境變數語法在組態中進行取代:${<var>}
或${env:<var>}
。接受字串和字串陣列。 -
configurations
組態物件的陣列,為 IntelliSense 引擎提供有關您的專案和偏好設定的資訊。根據預設,擴充功能會根據您的作業系統為您建立組態。您也可以新增其他組態。 -
version
我們建議您不要編輯此欄位。它會追蹤c_cpp_properties.json
檔案的目前版本,以便擴充功能知道應該存在哪些屬性和設定,以及如何將此檔案升級至最新版本。 -
enableConfigurationSquiggles
設定為true
以向 C/C++ 擴充功能報告在c_cpp_properties.json
檔案中偵測到的錯誤。
組態屬性
-
name
識別組態的易記名稱。Linux
、Mac
和Win32
是特殊識別碼,用於在這些平台上自動選取的組態。VS Code 中的狀態列會顯示哪個組態處於作用中狀態。您也可以選取狀態列中的標籤來變更作用中組態。 -
compilerPath
(選用) 用於建置專案的編譯器的完整路徑,例如/usr/bin/gcc
,以啟用更精確的 IntelliSense。擴充功能會查詢編譯器,以判斷系統包含路徑和預設定義,以用於 IntelliSense。放入
"compilerPath": ""
(空字串) 將會略過查詢編譯器。如果指定的編譯器不支援用於查詢的引數,這會很有用,因為擴充功能會預設回到它可以找到的任何編譯器 (例如 Visual C)。省略compilerPath
屬性不會略過查詢。 -
compilerArgs
(選用) 用於修改所使用包含或定義的編譯器引數,例如-nostdinc++
、-m32
等。採用額外空格分隔引數的引數應以陣列中的個別引數輸入,例如,對於--sysroot <arg>
,請使用\"--sysroot\", \"<arg>\"
。 -
intelliSenseMode
要使用的 IntelliSense 模式,其會對應至 MSVC、gcc 或 Clang 的架構特定變體。如果未設定或設定為${default}
,擴充功能將會選擇該平台的預設值。平台預設值
- Windows:
windows-msvc-x64
- Linux:
linux-gcc-x64
- macOS:
macos-clang-x64
僅指定
<compiler>-<architecture>
變體 (例如gcc-x64
) 的 IntelliSense 模式是舊版模式,並且會根據主機平台自動轉換為<platform>-<compiler>-<architecture>
變體。 - Windows:
-
includePath
包含路徑是一個資料夾,其中包含標頭檔 (例如#include "myHeaderFile.h"
),這些標頭檔包含在原始檔中。指定 IntelliSense 引擎在搜尋包含的標頭檔時要使用的路徑清單。在這些路徑上的搜尋不是遞迴的。指定**
以指示遞迴搜尋。例如,${workspaceFolder}/**
將會搜尋所有子目錄,而${workspaceFolder}
則不會。如果在安裝 Visual Studio 的 Windows 上,或是在compilerPath
設定中指定編譯器,則不需要在此清單中列出系統包含路徑。 -
defines
預處理器定義的清單,供 IntelliSense 引擎在剖析檔案時使用。您可以選擇性地使用=
來設定值,例如VERSION=1
。 -
cStandard
用於 IntelliSense 的 C 語言標準版本。例如,c17
、gnu23
或${default}
。請注意,GNU 標準僅用於查詢設定的編譯器以取得 GNU 定義,而 IntelliSense 將會模擬對等的 C 標準版本。 -
cppStandard
用於 IntelliSense 的 C++ 語言標準版本。例如,c++20
、gnu++23
或${default}
。注意:GNU 標準僅用於查詢設定的編譯器以取得 GNU 定義,而 IntelliSense 將會模擬對等的 C++ 標準版本。 -
configurationProvider
可以為原始檔提供 IntelliSense 組態資訊的 VS Code 擴充功能的 ID。例如,使用 VS Code 擴充功能 IDms-vscode.cmake-tools
從 CMake 工具擴充功能提供組態資訊。如果您已指定 configurationProvider,則提供的組態會優先於c_cpp_properties.json
中的其他設定。configurationProvider
候選擴充功能必須實作 vscode-cpptools-api。 -
windowsSdkVersion
要在 Windows 上使用的 Windows SDK 包含路徑版本,例如10.0.17134.0
。 -
macFrameworkPath
IntelliSense 引擎在搜尋來自 Mac Framework 的包含標頭時要使用的路徑清單。僅在 macOS 的組態上支援。 -
forcedInclude
(選用) 應在處理原始檔中的任何其他字元之前包含的檔案清單。檔案會依列出的順序包含。 -
compileCommands
(選用) 工作區的compile_commands.json
檔案完整路徑。如果compile_commands.json
中有與編輯器中開啟的檔案相符的項目,則該命令列將用於設定該檔案的 IntelliSense,而不是c_cpp_properties.json
的其他欄位。如需檔案格式的詳細資訊,請參閱 Clang 文件。某些建置系統 (例如 CMake) 簡化了此檔案的產生。 -
dotConfig
Kconfig 系統所建立之 .config 檔案的路徑。Kconfig 系統會產生一個檔案,其中包含建置專案所需的所有定義。使用 Kconfig 系統的專案範例包括 Linux Kernel 和 NuttX RTOS。 -
mergeConfigurations
設定為true
以將包含路徑、定義和強制包含與來自組態提供者的項目合併。 -
customConfigurationVariables
可透過命令${cpptools:activeConfigCustomVariable}
查詢的自訂變數,以用於launch.json
或tasks.json
中的輸入變數。 -
browse
當"C_Cpp.intelliSenseEngine"
設定為"Tag Parser"
(也稱為「模糊」IntelliSense 或「瀏覽」引擎) 時使用的一組屬性。這些屬性也由 [移至定義/宣告] 功能使用,或當「預設」IntelliSense 引擎無法解析原始檔中的#includes
時使用。
瀏覽屬性
-
path
Tag Parser 搜尋原始檔所包含標頭的路徑清單。如果省略,則includePath
將會用作路徑。預設會在這些路徑上進行遞迴搜尋。指定*
以指示非遞迴搜尋。例如:${workspaceFolder}
將會搜尋所有子目錄,而${workspaceFolder}/*
則不會。 -
limitSymbolsToIncludedHeaders
如果為 true,則 Tag Parser 將只剖析已由${workspaceFolder}
中原始檔直接或間接包含的程式碼檔案。如果為 false,則 Tag Parser 將剖析在browse.path
清單中指定路徑中找到的所有程式碼檔案。 -
databaseFilename
產生符號資料庫的路徑。此屬性指示擴充功能將 Tag Parser 的符號資料庫儲存在工作區預設儲存位置以外的其他位置。如果指定相對路徑,則會使其相對於工作區的預設儲存位置,而不是工作區資料夾本身。${workspaceFolder}
變數可用於指定相對於工作區資料夾的路徑 (例如${workspaceFolder}/.vscode/browse.vc.db
)
支援的變數
您可以允許 tasks.json
或 launch.json
從 c_cpp_properties.json
查詢目前的作用中組態。若要執行此動作,請使用變數 ${command:cpptools.activeConfigName}
作為 tasks.json
或 launch.json
指令碼中的引數。