Makefile执行删除文件夹命令提示'es'未识别错误如何解决
错误原因
报错由两个问题共同导致:
- 路径解析异常:Windows cmd默认将正斜杠
/识别为命令参数前缀,你写的路径bin/debug/res末尾的/res会被拆分为参数/r和独立字符串es,系统找不到名为es的可执行程序,因此抛出对应报错。 - 命令选用错误:
del是cmd中专门用于删除文件的命令,本身不支持直接删除文件夹,哪怕路径解析正常也无法完成删除文件夹的需求。
修正方案
你原来写的cmd //c是适配MinGW/MSYS2环境make的正确写法,不需要调整,只需要将后面的删除逻辑替换为文件夹删除专用的rd(别名rmdir)命令,同时将路径的正斜杠替换为反斜杠避免解析错误即可,正确配置如下:
cmd //c rd /s /q bin\debug\res
参数说明:
/s:递归删除目标文件夹及内部所有子文件、子文件夹/q:开启安静执行模式,删除前不会弹出交互确认提示
如果目标文件夹路径包含空格,给路径整体加上双引号包裹即可正常识别:
cmd //c rd /s /q "bin\debug\project resource"
如果你需要让Makefile同时兼容Windows、Linux、macOS多运行环境,不要硬编码cmd专属指令,可以借助Make内置变量做跨平台适配,类Unix环境下使用
rm -rf指令,Windows环境自动映射为对应cmd命令,实现一份配置多端运行。
内容的提问来源于stack exchange,提问作者setorano
相关产品推荐
相关产品推荐

