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 Tools 扩展提供配置信息。如果您指定了 configurationProvider,则提供的配置将优先于c_cpp_properties.json
中的其他设置。configurationProvider
候选扩展必须实现 vscode-cpptools-api。 -
windowsSdkVersion
在 Windows 上使用的 Windows SDK 包含路径的版本,例如10.0.17134.0
。 -
macFrameworkPath
IntelliSense 引擎在搜索来自 Mac 框架的包含头文件时要使用的路径列表。仅在 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
将用作path
。默认情况下,在这些路径上的搜索是递归的。指定*
以指示非递归搜索。例如:${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
脚本中的参数。