你不需要在 c_cpp_properties.json
文件中指定所有字段。扩展会自动用默认值填充任何缺失的字段。
顶级属性
-
env
一个用户定义的变量数组,这些变量可以通过标准环境变量语法在配置中进行替换:${<var>} 或 ${env:<var>}。接受字符串和字符串数组。 -
configurations
一个配置对象数组,向 IntelliSense 引擎提供关于你的项目和偏好的信息。默认情况下,扩展会根据你的操作系统为你创建一个配置。你也可以添加额外的配置。 -
version
我们建议你不要编辑此字段。它跟踪c_cpp_properties.json
文件的当前版本,以便扩展知道应该存在哪些属性和设置,并如何将此文件升级到最新版本。 -
enableConfigurationSquiggles
设置为true
以报告在c_cpp_properties.json
文件中检测到的错误到 C/C++ 扩展。
配置属性
-
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}
不会。如果在 Windows 上安装了 Visual Studio,或在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 Tools 扩展提供配置信息。如果指定了configurationProvider
,该提供的配置将优先于c_cpp_properties.json
中的其他设置。配置提供程序候选扩展必须实现
vscode-cpptools-api
。 -
windowsSdkVersion
Windows 上使用的 Windows SDK 版本的包含路径,例如10.0.17134.0
。 -
macFrameworkPath
IntelliSense 引擎在搜索来自 Mac 框架的包含头文件时使用的路径列表。仅在 macOS 配置中支持。 -
forcedInclude (可选)
在处理源文件中的任何其他字符之前应包含的文件列表。文件按列出的顺序包含。 -
compileCommands (可选)
工作区的compile_commands.json
文件的完整路径。如果在编辑器中打开的文件中有匹配的条目,将使用该命令行来配置 IntelliSense,而不是c_cpp_properties.json
的其他字段。有关文件格式的更多信息,请参阅 Clang 文档。一些构建系统(如 CMake)简化了生成此文件。 -
dotConfig
Kconfig 系统生成的.config
文件的路径。Kconfig 系统生成一个包含构建项目所需的所有定义的文件。使用 Kconfig 系统的项目示例包括 Linux 内核和 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 将解析浏览路径列表中指定的路径中的所有代码文件。 -
databaseFilename
生成的符号数据库的路径。此属性指示扩展将 Tag Parser 的符号数据库保存到工作区默认存储位置以外的位置。如果指定了相对路径,它将相对于工作区的默认存储位置,而不是工作区文件夹本身。可以使用${workspaceFolder}
变量来指定相对于工作区文件夹的路径(例如${workspaceFolder}/.vscode/browse.vc.db
)。
支持的变量
你可以允许 tasks.json
或 launch.json
查询 c_cpp_properties.json
中当前活动的配置。为此,请在 tasks.json
或 launch.json
脚本中使用变量 ${command:cpptools.activeConfigName}
作为参数。