Windows10下Raspberry Pi Pico编译报错:cmake_check_build_system不存在及路径空格问题
解决Windows下NMake执行因路径空格导致的U1077错误(RP2040开发环境)
问题根源
你的推测完全正确:路径中包含空格(如C:\Program Files(x86)...)时,NMake会将空格前的部分(C:\Program)当作独立命令,导致命令截断报错。CMake生成Makefile时未对含空格的路径自动添加引号,是触发这个问题的直接原因。
解决方法
方法1:将工具链安装到无空格路径(最省心)
直接把ARM GNU Toolchain和CMake安装到不含空格的目录,比如:
- ARM工具链:
C:\GNUArmToolchain\10_2021.10 - CMake:
C:\CMake\bin
重新运行CMake配置命令即可,无需额外处理:
cmake -G "NMake Makefiles" ..
方法2:CMake配置时手动指定带引号的工具链路径
如果不想重新安装,在CMake配置阶段就明确给含空格的路径加上双引号,强制生成的Makefile包含引号:
cmake -G "NMake Makefiles" ^ -DCMAKE_C_COMPILER="C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin\arm-none-eabi-gcc.exe" ^ -DCMAKE_CXX_COMPILER="C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin\arm-none-eabi-g++.exe" ^ -DCMAKE_COMMAND="C:\Program Files\CMake\bin\cmake.exe" ^ ..
^是Windows命令行的换行符,方便阅读,也可以写成单行。
方法3:临时修改已生成的Makefile
如果只是临时测试,可直接修改构建目录下的Makefile,给所有含空格的命令/路径加上双引号:
修改你提供的Makefile片段为:
all: cmake_check_build_system "$(CMAKE_COMMAND)" -E cmake_progress_start C:\pico\pico-examples\build\CMakeFiles C:\pico\pico-examples\build\\CMakeFiles\progress.marks "$(MAKE)" $(MAKESILENT) -f CMakeFiles\Makefile2 /nologo -$(MAKEFLAGS) all "$(CMAKE_COMMAND)" -E cmake_progress_start C:\pico\pico-examples\build\CMakeFiles 0 .PHONY : all
注意:此方法是临时方案,重新运行CMake会覆盖修改后的内容。
方法4:使用短路径替代含空格路径
Windows支持短路径格式,可通过dir /x命令查看目录的短路径(比如C:\Program Files (x86)的短路径通常是C:\PROGRA~2),然后在CMake配置或环境变量中使用短路径:
cmake -G "NMake Makefiles" -DCMAKE_C_COMPILER=C:\PROGRA~2\GNUArmEmbeddedToolchain\10_2021.10\bin\arm-none-eabi-gcc.exe ..
内容的提问来源于stack exchange,提问作者CodeSocke
相关产品推荐
相关产品推荐

