VSCode执行Arduino上传重置c_cpp_properties.json致头文件包含错误
问题成因
- VSCode Arduino扩展的默认机制是,每次执行验证、上传操作时,会根据当前选中的开发板型号、配置的Arduino路径自动全量重写
.vscode/c_cpp_properties.json文件,手动写入的配置不在扩展的生成规则内,会被直接覆盖。 - 手动修改配置时指定的
variants/mega路径仅适配Mega系列开发板,如果实际使用的是Uno、Nano等其他型号开发板,即使提示上传成功,编译阶段调用的板级核心文件和实际硬件不匹配,烧录的固件自然无法正常运行。 - 扩展未正确识别Arduino安装路径、未匹配到正确开发板型号时,自动生成的includePath不会包含内置库目录,本质是基础配置错误,直接修改自动生成的配置文件属于治标不治本,无法解决编译时的路径匹配问题。
解决方法
- 先完成Arduino扩展的基础配置,不要直接手动修改扩展托管的
c_cpp_properties.json- 按下
Cmd+Shift+P调出命令面板,执行Arduino: Board Config,选中和你实际硬件完全一致的开发板型号,例如使用Uno就选择Arduino AVR Boards -> Arduino Uno,不要错选成其他板型。 - 打开VSCode设置页,搜索
Arduino: Path,填入Arduino IDE的核心路径,即/maker-stuff/Arduino.app/Contents/Java,路径到Java层级即可,不需要追加子目录。 - 同设置页找到
Arduino: Command Path项,填入Arduino可执行文件路径/maker-stuff/Arduino.app/Contents/MacOS/Arduino,确保扩展能正常调用Arduino自带的编译工具链。
- 按下
- 配置永久生效的Intellisense规则,避免被覆盖
编辑项目根目录下的.vscode/settings.json文件(不存在则新建),在C_Cpp.default.includePath字段下追加需要额外引入的库路径,扩展生成C/C++配置时会自动合并这部分内容,不会被上传/验证操作重置,配置示例:
{ "C_Cpp.default.includePath": [ "/maker-stuff/Arduino.app/Contents/Java/libraries/**" ] }
注意:板级核心、编译器、variant相关的路径不要手动添加,只要选对开发板型号,扩展会自动匹配对应路径,手动添加反而容易出现板型和路径不匹配的问题。
- 清理旧配置重新验证上传
- 删除之前手动修改过的
.vscode/c_cpp_properties.json文件。 - 执行
Arduino: Verify命令,等待扩展自动重新生成符合当前板型的配置文件,此时Intellisense即可正常识别LiquidCrystal.h,不会报头文件找不到的错误。 - 选中硬件对应的串口端口,执行
Arduino: Upload操作,上传完成后程序即可正常运行,后续重复上传也不会出现配置被重置的问题。
- 删除之前手动修改过的
补充说明:如果后续安装第三方库后出现识别问题,可通过命令面板执行
Arduino: Library Manager确认库安装在当前配置的Arduino路径下的libraries目录,避免因多版本Arduino共存导致路径扫描错误。
内容的提问来源于stack exchange,提问作者michael
相关产品推荐
相关产品推荐

