Sublime Text 不能直接编译 Arduino 代码,需通过配置 Build System 调用独立安装的 arduino-cli 工具链实现;必须指定完整平台名(如arduino:avr:uno)、正确串口路径,并确保项目内仅有一个同名 .ino 主文件。

Sublime Text 能不能直接编译 Arduino 代码
不能。Sublime Text 本身只是个编辑器,没有内置编译器或上传工具,arduino-cli 或 avr-gcc 这类底层工具才是干活的。你看到的“Sublime 编译 Arduino”效果,全是靠外部命令调用实现的——本质是 Sublime 做了个图形外壳,背后还是 Arduino IDE 那套工具链。
所以配置的核心不是“让 Sublime 变成 IDE”,而是“让它能正确调用 arduino-cli 并把错误信息友好地显示出来”。别指望点一下就烧录进板子,中间漏掉路径、权限、板型定义任何一个环节,Build failed 就在等你。
必须装 arduino-cli 而不是只装 Arduino IDE
Arduino IDE 自带的 CLI 工具藏得深、版本难控、PATH 不一定自动加;而独立安装的 arduino-cli 更轻量、更新快、命令直给,Sublime 调用起来更稳。
- 去 GitHub releases 页面 下最新
arduino-cli二进制(Windows 选.exe,macOS 选arm64或amd64,Linux 选对应架构) - 放到一个固定路径,比如
/usr/local/bin/arduino-cli(macOS/Linux)或C:\arduino-cli\arduino-cli.exe(Windows) - 终端里运行
arduino-cli version确认可用,再运行arduino-cli core update-index和arduino-cli core install arduino:avr装好 AVR 核心(否则连Uno都识别不了) - Windows 用户注意:如果用 Git Bash 或 WSL,
arduino-cli得装两份——一份给 Sublime(调用 cmd/powershell),一份给终端(路径别混)
Sublime 的 Build System 怎么写才不报 command not found
错误基本都出在路径没写对,或者 Shell 环境和 Sublime 启动环境不一致。Mac/Linux 下尤其明显:你终端里 which arduino-cli 有结果,但 Sublime 启动时根本没加载 ~/.zshrc,PATH 里压根没有它。
解决方法是绕过 PATH,直接写死路径,并显式指定 shell:
{
"shell_cmd": "/usr/local/bin/arduino-cli compile -b arduino:avr:uno ${file}",
"working_dir": "${file_path}",
"selector": "source.cpp",
"variants": [
{
"name": "Upload",
"shell_cmd": "/usr/local/bin/arduino-cli upload -b arduino:avr:uno -p /dev/cu.usbmodem14201 ${file}"
}
]
}
-
-b参数必须写全平台名,arduino:avr:uno≠uno,缺一不可 -
-p指定串口,macOS 是/dev/cu.usbmodem*,Windows 是COM3这种,Linux 是/dev/ttyACM0,每次换线可能变,得手动改 - Build System 文件存为
Arduino.sublime-build,放在Sublime Text/Packages/User/目录下 - 别用
cmd或shell_cmd混合写法,Sublime Windows 版对cmd /c解析不稳定
为什么改了代码,Build 却还用旧的 .ino 文件
因为 arduino-cli compile 默认只处理当前文件名匹配 .ino 的主文件,且要求同目录下有且仅有一个 .ino 文件。如果你把入口文件改成 main.cpp,或者不小心多留了个 old.ino,它要么报错,要么静默编译错的文件。
- 确保项目目录下只有一个
.ino文件,名字最好和文件夹名一致(如blink/blink.ino) - 如果坚持用
.cpp,得加--build-path和--output-dir手动指定,但容易和 Sublime 的${file}变量冲突,不推荐新手碰 - 修改后按
Ctrl+B(Win/Linux)或Cmd+B(macOS)触发 Build,别点菜单栏“Tools → Build”,那个不一定走你刚选的 Build System - 编译失败时看 Sublime 底部状态栏——它只显示第一行错误;真要调试,得盯着 Build 窗口里的完整输出,尤其是
Compiling sketch...后面那几行
最常被忽略的是:arduino-cli 默认不会自动检测串口变化,插拔一次板子后,得手动确认 -p 参数里的端口号是否还对。这个细节卡住的人,比路径写错的还多。










