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_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}
不会。如果在安装了 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 内核和 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
当设置为真时,标签解析器将仅解析由${workspaceFolder}
中的源文件直接或间接包含的代码文件。当设置为假时,标签解析器将解析在browse.path
列表中指定的路径中找到的所有代码文件。 -
databaseFilename
生成的符号数据库的路径。此属性指示扩展将标签解析器的符号数据库保存到工作区默认存储位置以外的某个位置。如果指定了相对路径,则该路径将相对于工作区的默认存储位置,而不是工作区文件夹本身。${workspaceFolder}
变量可用于指定相对于工作区文件夹的路径(例如${workspaceFolder}/.vscode/browse.vc.db
)。
支持的变量
您可以允许tasks.json
或launch.json
从c_cpp_properties.json
查询当前活动配置。为此,请在tasks.json
或launch.json
脚本中使用变量${command:cpptools.activeConfigName}
作为参数。