sublime text 本身不能编译或上传 arduino 代码,所有功能均依赖外部调用独立安装的 arduino-cli;必须写死其绝对路径、显式指定 fqbn(如 arduino:avr:uno)和串口(如 /dev/cu.usbmodem14301),禁用已停更的 stino 插件。

Sublime Text 本身不能编译或上传 Arduino 代码——它只是编辑器,所有“编译成功”都来自外部调用 arduino-cli;配错路径、FQBN 或串口格式,Build failed 立刻报给你看。
arduino-cli 必须独立安装且路径写死
Sublime 不自带任何编译器,avr-gcc、avrdude、核心库全靠 arduino-cli 调度。不能只装 Arduino IDE 就完事,必须单独安装并确保命令行能直接运行 arduino-cli:
- 从 arduino-cli 官方 releases 页面 下载对应系统二进制(推荐 0.40+ 版本)
- 解压后把完整路径加到系统
PATH,比如 macOS 上是/usr/local/bin/arduino-cli,Windows 上是C:\arduino-cli\arduino-cli.exe - 在终端执行
arduino-cli version验证是否可调用;若报command not found,Sublime 的 Build System 一定失败 - 别依赖 Stino 自动探测——它已停更,新版 CLI 兼容差,且不处理平台未安装等前置问题
FQBN 和串口必须显式指定,不能留空
Build System 调用 arduino-cli compile 和 upload 时,--fqbn 和 --port 是必填参数。漏掉或格式错,会卡在 Unknown board 或 Serial port not found:
- FQBN 示例:Uno 板必须写成
arduino:avr:uno,Nano 是arduino:avr:nano:cpu=atmega328,不能简写为uno - 串口路径要和系统一致:macOS 是
/dev/cu.usbmodem14301,Linux 是/dev/ttyACM0,Windows 是COM3(注意不是COM3:) - 串口名需实时确认:拔插板子后运行
arduino-cli board list查最新设备,避免写死一个已断开的端口 - Build System 中建议用
"cmd": ["arduino-cli", "upload", "--fqbn", "arduino:avr:uno", "--port", "/dev/cu.usbmodem14301", "$file_path"]这类绝对写法
.ino 文件需满足命名与结构约束
Sublime 不识别 .ino 的特殊语法糖(如自动添加 #include "Arduino.h"、封装 setup()/loop()),arduino-cli 却严格依赖它:
- 项目根目录下只能有一个
.ino文件,且文件名必须和文件夹名完全一致(如blink/blink.ino) - 若手动改过名或新建了多个
.ino,arduino-cli会报No sketch found - 头文件跳转失效?不是 Sublime 问题,是没告诉它去哪里找
Arduino.h:在 Project Settings 里补上"include_dirs": ["/path/to/arduino/hardware/arduino/avr/cores/arduino"] - 想用 C++ 类或分离
.cpp?可以,但得手动加#include "Arduino.h",且主.ino文件仍需存在并作为入口
Stino 插件已不可靠,优先用自定义 Build System
Stino 最后一次更新是 2017 年,不支持 arduino-cli v0.30+ 的认证机制、平台管理 API 和新板型(如 ESP32-S3)。现在启用它,大概率遇到:
- 菜单栏出现
Arduino但点击无响应 -
Board Manager加载超时或显示空列表 - 上传时静默失败,日志里只有
exit code 1,没有具体错误 - 配置项
arduino_app_dir指向旧版 IDE 目录后,arduino-cli反而被绕过,降级调用已废弃的ino工具
真正可控的方式是:删掉 Stino,用 Sublime 的 Tools → Build System → New Build System… 写纯 JSON,只调 arduino-cli,把错误原样打到底部面板——这样哪一行出错,一眼就能定位到 FQBN 拼错还是串口权限不足。











