1. 为什么要在 VS Code 里折腾 AC63 的 Makefile 编译
如果你手上是 AC63 系列(杰理 AC63 芯片)的音频/蓝牙工程,官方 IDE 大概率还是 CodeBlocks。CodeBlocks 能编译、能烧录,但代码补全、跳转、Git 集成、多光标这些体验,和现在的 VS Code 差了一整代。很多人日常是「VS Code 写代码 + CodeBlocks 编译」,切来切去,保存不同步、改完忘了编译、编译完忘了烧录,一天下来光切窗口就浪费不少时间。
这篇要解决的就是这条链路:在 VS Code 里直接make编译 AC63 工程,从 Makefile 报错、工具链路径找不到、头文件缺失,一路排到烧录后板子自动重启。同时把 TaoToken 接进来,统一管理 Key 和 API 通道,让 VS Code 里的 AI 辅助(Cline / CC Switch 这类)能直接读工程、改 Makefile、分析编译日志,而不是你手动复制报错去问。
适合谁:已经在用 AC63 工程、会一点命令行、想让编译和 AI 辅助都在 VS Code 里闭环的嵌入式开发者。不适合完全没碰过 Makefile 的纯小白,但我会把每一步命令和配置都给全,照着改就行。
核心检索词先摆出来:VS Code 编译 AC63、AC63 Makefile 配置、杰理 AC63 工具链报错、VS Code 编译杰理工程。这几个词后面会反复出现,你搜问题的时候也用得上。
2. TaoToken 前置:把 Key 和 API 通道先备好
在 VS Code 里做 AI 辅助,绕不开一个事:你得有个统一的入口去调模型。TaoToken 在这里的角色就是「统一 Key / API 通道」——你不用在每个插件里分别填不同厂商的 Key,而是拿一个 TaoToken 的 Key,走同一个 API 地址,模型对话、代码补全、Agent 调用都从这儿走。
官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
API 地址(注意这个不加 UTM):https://taotoken.net/api
你需要提前准备的东西:
- 一个 TaoToken 账号,登录后进控制台
- 在 API Keys 页面生成一个 Key,复制保存好(只显示一次)
- 确认你要用的模型名,比如做代码分析常用的那几个
控制台和 Key 管理入口:
- 控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
- API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
注意:Key 不要硬编码进工程文件里提交到 Git。建议放在系统环境变量,或者 VS Code 的用户级 settings.json,别放进项目级
.vscode/settings.json一起提交。
如果你只是想先验证模型通不通,可以用模型对话页面直接试:
- 模型对话:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite
长期在 VS Code 里做编码、跑 Agent 的,建议看 Coding Plan,额度模型更划算:
- Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
接入文档在这里,配置参数以文档为准:
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
3. 可复制配置:settings.json 与 Makefile 片段
3.1 先确认工程结构
AC63 标准工程打开后大概是这样:
project/ ├── project.jpr # 工程文件 ├── 111Makefile # 官方自带但默认不启用的 Makefile ├── source/ # 源码 │ └── cpu/bd19/tools/download/data_trans/download.bat └── .vscode/ # VS Code 打开后自动生成关键动作:把111Makefile复制一份,去掉前面的111,变成Makefile。这是官方自带的,平时不启用,改名后make才会读它。
3.2 VS Code 的 settings.json
项目级.vscode/settings.json主要配终端和文件关联,让编译在 VS Code 内置终端里跑:
{ "terminal.integrated.defaultProfile.windows": "PowerShell", "terminal.integrated.cwd": "${workspaceFolder}/project", "files.associations": { "Makefile": "makefile", "*.mk": "makefile" }, "C_Cpp.default.includePath": [ "${workspaceFolder}/project/source/**", "${workspaceFolder}/project/include/**" ], "C_Cpp.default.defines": [ "CONFIG_AC63=1" ] }terminal.integrated.cwd指向 project 目录,这样你打开终端就直接在能跑make的位置,不用每次cd。
用户级 settings.json(放 TaoToken 相关,别提交)建议用环境变量方式,插件里引用:
{ "cline.apiProvider": "openai-compatible", "cline.openAiBaseUrl": "https://taotoken.net/api", "cline.openAiApiKey": "${env:TAOTOKEN_API_KEY}" }然后在系统环境变量里设TAOTOKEN_API_KEY,值为你在 API Keys 页面生成的那串。
3.3 Makefile 关键片段
官方 Makefile 里工具链路径通常是写死的,报错多半出在这。找到类似这几行,按你本机实际安装路径改:
# 工具链路径,按本机实际安装位置修改 CC := C:/JL/pi32v2/bin/clang.exe AR := C:/JL/pi32v2/bin/ar.exe LD := C:/JL/pi32v2/bin/ld.exe # 头文件搜索路径 INCLUDES := -I./source \ -I./source/include \ -I./source/cpu/bd19 # 源文件收集 SRCS := $(wildcard ./source/*.c) \ $(wildcard ./source/cpu/bd19/*.c) OBJS := $(SRCS:.c=.o) # 默认目标 all: $(OBJS) $(LD) -o output.elf $(OBJS)路径里的斜杠用/或\\都行,但别混用。Windows 下C:/JL/...这种正斜杠 Make 是认的。
3.4 烧录后自动重启的 download.bat 修改
编译烧录成功但板子不重启,是 AC63 常见坑。进到:
你的工程名/source/cpu/bd19/tools/download/data_trans/download.bat用文本编辑器打开,在烧录命令后面插入重启延时(250 是毫秒,按需调):
@echo off :: 烧录动作 download_tool.exe -f output.elf :: 烧录后延时重启,250 为毫秒 ping 127.0.0.1 -n 1 -w 250 > nulping -n 1 -w 250是 Windows 下做延时的常用写法,比timeout在某些环境更稳。
4. 验证请求:从 make 到跑通
4.1 第一次 make 一定会报错
在 VS Code 里 `Ctrl+`` 打开终端,确认在 project 目录,输入:
make第一次基本必报错,常见几类:
clang.exe: not found—— 工具链路径不对No such file or directory: xxx.h—— 头文件搜索路径缺了undefined reference to xxx—— 源文件没被wildcard收进来cannot open output file—— 输出目录不存在
别慌,这些就是排障清单。
4.2 逐类修
工具链找不到,先确认本机装没装,路径对不对:
where clang如果返回空,说明 PATH 里没有,要么加 PATH,要么在 Makefile 里写绝对路径。
头文件缺失,看报错里缺的是哪个头,去工程里搜它在哪个目录,把那个目录加进INCLUDES。
源文件没收到,检查wildcard的路径是不是写错了,或者文件在更深一层目录,需要再加一条wildcard。
4.3 编译成功的样子
修完之后再make,看到类似:
clang.exe -c source/main.c -o source/main.o clang.exe -c source/cpu/bd19/clock.c -o source/cpu/bd19/clock.o ld.exe -o output.elf source/main.o source/cpu/bd19/clock.o Build success: output.elfoutput.elf生成,就是编译通了。接着跑烧录,板子自动重启,说明整条链路闭环。
4.4 用 TaoToken 辅助分析编译日志
编译报错一大串的时候,与其自己一行行看,不如把日志丢给模型。在 VS Code 里用 Cline 或 CC Switch 接入 TaoToken 后,直接选中终端输出,让它分析:
请分析这段 AC63 工程的 make 报错,指出根因和修改位置: <粘贴报错日志>模型会告诉你缺哪个路径、哪个源文件没收到,比手动 grep 快很多。这也是把 TaoToken 接进来的实际价值——不是替代编译器,而是帮你读日志、改 Makefile。
5. 本篇常见错排查
5.1 make 命令本身找不到
PowerShell 里报make : 无法将"make"项识别为 cmdlet,说明 make 没装或没进 PATH。装 MinGW 或 MSYS2 后把make.exe所在目录加进系统 PATH,重开终端。
5.2 路径里有空格
工程放在C:/Users/My Name/project这种带空格的路径下,Makefile 里路径不加引号会断。要么把工程挪到无空格路径,要么在 Makefile 里给路径加引号。
5.3 头文件路径大小写
Windows 文件系统不区分大小写,但 Make 和 clang 在某些配置下区分。Source和source混用会找不到文件,统一成小写最稳。
5.4 烧录成功但板子不重启
回到 3.4 节,检查download.bat里延时那行有没有加对位置。加在烧录命令之后、脚本结束之前。250 毫秒不够就调到 500。
5.5 TaoToken 调用报 401
Key 没读到或写错。检查环境变量TAOTOKEN_API_KEY是否在当前终端可见:
echo $env:TAOTOKEN_API_KEYPowerShell 用$env:,cmd 用%TAOTOKEN_API_KEY%。VS Code 要重启才能读到新加的环境变量。
5.6 插件里 baseUrl 写错
TaoToken 的 API 地址是https://taotoken.net/api,别多加/v1或漏掉/api,具体以接入文档为准。写错会报 404 或连接失败。
6. 把 AI 辅助接进你的 AC63 工作流
编译链路跑通之后,下一步是让 AI 真正参与进来。在 VS Code 里,Cline 或 CC Switch 这类插件通过 TaoToken 的统一通道调模型,你可以让它:
- 读 Makefile,帮你补全缺失的
wildcard路径 - 分析编译日志,定位头文件缺失
- 根据报错改
download.bat的延时参数 - 解释 AC63 工程里某个源文件的作用
接入骨架(以 Cline 为例):
{ "cline.apiProvider": "openai-compatible", "cline.openAiBaseUrl": "https://taotoken.net/api", "cline.openAiApiKey": "${env:TAOTOKEN_API_KEY}", "cline.openAiModel": "你的模型名" }模型名以接入文档和控制台里可用的为准。配好后在 Cline 面板里发一条消息测试,能正常返回就通了。
如果你主要做长期编码和 Agent 任务,Coding Plan 的额度模型更适合:
- Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
需要生成新 Key 或管理已有 Key:
- API Keys:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
配置参数有疑问查接入文档:
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
Claude Code / Anthropic 相关接入:
- https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite
我自己的习惯是:Makefile 报错先自己扫一眼,扫不出来就把整段日志丢给模型,让它给修改建议,改完再make验证。这样一轮下来,比在 CodeBlocks 和 VS Code 之间来回切快得多,而且所有改动都在 Git 里可追溯。