似乎不可能使用GNU Make调用Windows系统命令(例如del,move等).我正在尝试创建一个不依赖于安装了额外工具(例如rm.exe来自Cygwin)的用户的makefile .
运行以下规则时,将报告错误del: command not found:
clean:
del *.o
Run Code Online (Sandbox Code Playgroud)
这可能是因为没有像"del"这样的可执行文件.我也尝试将它作为一个选项运行cmd但是这只是打开一个新的提示:
clean:
cmd /C del *.o
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows XP(5.1.2600)和GNU Make 3.79.1捆绑在一起作为MSys的一部分.
Tom*_*dge 11
似乎/C转换需要转义,因为a /被解释为GNU Make中的路径.以下按预期工作:
clean:
cmd //C del *.o
Run Code Online (Sandbox Code Playgroud)
因为基于 DOS 的系统有两个不同的删除文件和目录的命令,我发现有两个不同的定义效果最好:
ifeq ($(OS),Windows_NT)
RM = cmd //C del //Q //F
RRM = cmd //C rmdir //Q //S
else
RM = rm -f
RRM = rm -f -r
endif
clean:
$(RM) $(TARGET).elf $(TARGET).map
$(RRM) $(BUILD_DIR)
Run Code Online (Sandbox Code Playgroud)
也发生在我身上。在 makefile 的顶部添加:
SHELL=cmd
Run Code Online (Sandbox Code Playgroud)
由于您是在 Windows 上编译,因此选择“cmd”作为默认 shell。这很重要,因为 GNU make 将搜索 linux/unix 之类的 shell 的路径,如果找到,它将使用它。安装 cygwin 时就是这种情况。这种行为的副作用是找不到像“del”和“echo”这样的命令。如果我们告诉 GNU make 使用 'cmd' 作为它的 shell,那么 'del' 等将可用。
| 归档时间: |
|
| 查看次数: |
16934 次 |
| 最近记录: |