NMake编译树莓派Pico程序时报.PHONY未定义错误如何解决
报错核心原因
你使用微软NMake工具执行CMake为GNU Make生成的Makefile,二者语法规范不兼容。NMake原生不支持GNU Make的.PHONY、.NOTPARALLEL等特殊目标语法,手动删除所有.PHONY引用无法解决问题:CMake每次重新生成项目时都会自动写入这些内容,且除此之外还有大量GNU Make专属语法NMake无法识别,修改成本极高且毫无意义。
解决方案
- 清空项目中已有的
build目录,删除所有旧的临时编译文件 - 选择Pico工具链支持的CMake生成器:
树莓派Pico官方工具链搭配GNU Arm嵌入式编译器,支持MinGW Makefiles和Ninja两种生成器,二选一即可:- 命令行编译场景:进入空的build目录后,指定生成器执行CMake配置
- 选择MinGW Makefiles:执行命令
cmake -G "MinGW Makefiles" .. - 选择Ninja:执行命令
cmake -G "Ninja" ..
- 选择MinGW Makefiles:执行命令
- VSCode CMake Tools插件场景:按
Ctrl+Shift+P调出命令面板,选择「CMake: Select a Generator」,在列表中选中MinGW Makefiles或Ninja,不要选择任何带NMake的生成器
- 命令行编译场景:进入空的build目录后,指定生成器执行CMake配置
- 执行对应编译命令:
- 使用MinGW Makefiles生成器:执行
mingw32-make完成编译 - 使用Ninja生成器:执行
ninja完成编译
- 使用MinGW Makefiles生成器:执行
编译完成后会生成.uf2格式固件,拷贝到树莓派Pico挂载的U盘即可运行验证。
内容的提问来源于stack exchange,提问作者deathwillcome800
相关产品推荐
相关产品推荐

