C/C++ 工程自动配置
⚠️ 个人自用扩展(Personal Use):本扩展为个人内部使用开发,未面向公众发布或提供维护,仅供参考与自用。
自动为 C/C++ 工程生成 compile_commands.json,并配置 VS Code 的 C/C++ 与 clangd 环境,一键排除非活动机型/UI 目录,让代码补全、跳转与索引更精准。
支持 MTK 与 信芯微 两大类工程,自动识别工程类型与机型,无需手动折腾编译参数。
功能特性
- 🏭 多工程类型自动识别
- MTK 工程:
MST9U7、MST9U6、970X —— Windows 下通过 Cygwin + make -n -B 捕获编译命令
- 信芯微工程:
XINCHIP —— Linux/WSL 下通过 build.sh 的 make 系统,make -n -B -k(dry-run)捕获编译命令
- 📄 一键生成
compile_commands.json(不实际编译,速度快)
- 🗂️ 自动排除非活动目录:只索引当前活动机型/UI 文件夹,避免多机型工程中无关代码干扰补全与跳转
- 🎯 多机型可选:信芯微工程存在多个
build.sh(多机型)时,在侧边栏选择要生成的工程
- ⚙️ 可定制
.clangd 模板:通过 VS Code 设置调整 CompileFlags、宏定义、排除规则
- 🧭 工程环境选择:自动检测 / MTK(Cygwin)/ 信芯微(WSL),只检查所选环境的依赖
快速开始
- 打开你的 C/C++ 工程文件夹(信芯微工程可用 UNC 路径
\\wsl$\<发行版>\... 打开)。
- 点击侧边栏的「生成配置」按钮,或运行命令
C Auto Config: Generate compile_commands.json。
- 插件自动识别工程类型、捕获编译命令、生成
compile_commands.json,并配置排除规则。
侧边栏顶部可选择「工程环境」:自动检测 / MTK(Cygwin) / 信芯微(WSL)。
选择后只检查对应环境的依赖;「屏蔽 PMcode」选项仅对 MTK 工程显示。
信芯微(XinChip)工程说明
信芯微工程在 Linux/WSL 下使用 build.sh 编译。插件通过 WSL 调用其 make 系统生成配置:
- 打开信芯微工程(代码位于 WSL 内时使用
\\wsl$\<发行版>\... 打开)。
- 在侧边栏「信芯微环境检查」卡片中,通过「生成目标工程(build.sh)」下拉框选择要生成的工程(多机型时可选,选择自动保存)。
- 点击「生成配置」:插件读取 build.sh 的 ProjectConfig 解析全部
GR_* 宏(GR_BOARD_NAME/GR_OSD_NAME/GR_DataBase_NAME/GR_PANEL_NAME 等)作为环境变量,
在 WSL 的 build/ 目录执行 make -n -B -k debug(dry-run,不实际编译),完整枚举所有源码与正确变体路径,生成 compile_commands.json
(等价于 bear 的完整度但不依赖 bear;不设置这些宏时 $(GR_BOARD_NAME) 等为空,会导致 Pinshare 路径缺失、user 源码漏抓)。
- 插件自动排除非活动目录:非活动机型(
user/<厂商>/<机型>/、device/<厂商>/<机型>/)、out/、prebuilds/ 等;
并进一步对活动机型排除非活动的 OSD / DataBase / Board / Panel 变体子目录(如 DataBase/OSD_CaiXun、user/Comm/Board/GR_HG201、PanelList/LVDS_M238HCA... 等),只保留活动的一个。
活动变体由插件直接读取 build.sh 的 ProjectConfig 解析(ProjectConfig.h → GR_CUSTOM_PROJECT → ProjectConfig/<custom>.h 中的全部宏,含 #include "ProjectConfig/..." / #include "BoardConfig/..." 重定向链);这些配置头文件会加入 C_Cpp.default.forcedInclude 与 .clangd 的 -include 强制包含,语言服务器每次解析自动读取最新宏定义,改文件无需重新提取,不依赖 make 输出。
说明:扩展运行在 Windows(通过 wsl.exe 调用)时,生成的 compile_commands.json 路径会转换为 \\wsl$\<发行版>\... 形式,便于 Windows 侧 clangd / C/C++ 扩展解析;运行在 Remote-WSL 中则直接使用 Linux 路径。
环境要求
| 工程类型 |
编译环境 |
| MTK |
Cygwin(Windows 下执行 make) |
| 信芯微 |
WSL1 / WSL2(Windows 下通过 wsl.exe,或直接在 Linux / Remote-WSL 中运行) |
另外需要安装 clangd 或 C/C++ 扩展以获得补全/跳转能力。
配置项
| 配置 |
说明 |
cAutoConfig.environment |
工程环境类型:auto(自动检测)/ mtk / xinchip,默认 auto |
cAutoConfig.cygwinRoot |
Cygwin 安装根目录(MTK 工程使用) |
cAutoConfig.compilerPath |
编译器完整路径(可选,默认自动拼接) |
cAutoConfig.clangdTemplate |
自定义 .clangd 模板(可选) |
cAutoConfig.wslDistro |
信芯微工程使用的 WSL 发行版名称,默认 Ubuntu |
cAutoConfig.xinchipBuildDir |
信芯微工程构建目录(相对工程根目录,默认 build) |
cAutoConfig.xinchipTarget |
make 目标:debug / release,默认 debug |
cAutoConfig.xinchipBuildSh |
侧边栏选定的 build.sh 相对路径(生成时按该工程重新生成 out/.config) |
cAutoConfig.xinchipJobs |
make 并行任务数(-jN),默认 0=自动使用 nproc,用于加速捕获 |
cAutoConfig.xinchipCaptureMode |
捕获方式:dryrun(默认,make -n 快速无副作用)/ build(真实编译 + HEADER= 回显,bear 等价但会真实编译并生成产物) |
cAutoConfig.extraDefines |
用户自定义额外宏定义 |
cAutoConfig.excludePMcode |
屏蔽 PMcode(MTK 工程) |
cAutoConfig.debugLogging |
启用调试日志输出 |
更新日志
变更记录见随扩展一同发布的 CHANGELOG.md 文件。
打包发布
个人自用扩展无公开仓库,打包时使用以下命令(已内置 --allow-missing-repository 避免仓库缺失警告):
npm run package:vsix
| |