Makefile ';保持清洁';不起作用

Makefile ';保持清洁';不起作用,makefile,mingw,msys,Makefile,Mingw,Msys,所以我为一个c程序制作了一个makefile。出于某种原因,我的“干净”不起作用。下面是我的makefile的一小部分: CC=gcc FLAGS=-c -Wall -I. CLEANC=rm -rf *.o move.o: move.c $(CC) $(FLAGS) move.c /*Lot more codes like this^^^*/ clean: $(CLEANC) 当我在命令提示符下运行“makeclean”时,会显示以下内容: rm -rf *.o pro

所以我为一个c程序制作了一个makefile。出于某种原因,我的“干净”不起作用。下面是我的makefile的一小部分:

CC=gcc
FLAGS=-c -Wall -I.
CLEANC=rm -rf *.o

move.o: move.c
     $(CC) $(FLAGS) move.c
/*Lot more codes like this^^^*/

clean:
    $(CLEANC)
当我在命令提示符下运行“makeclean”时,会显示以下内容:

rm -rf *.o
process_begin: CreateProcess(NULL, rm -rf *.o, ...) failed.
make (e=2): The system cannot find the file specified.
makefile:116: recipe for target 'clean' failed
make: *** [clean] Error 2
我不知道我做错了什么。我试着把CLEANC改成

rm -f *.o
rm *.o 
rm *o
rm -f *.o test.exe //test.exe is executable

但不管我怎么努力,它还是给了我同样的错误。我真的需要帮助。提前谢谢

从错误输出中出现的
CreateProcess
判断,我假设您正在Windows下运行
make


这意味着没有
rm
命令,您应该使用
del
,并且
-rf
标志也应该相应地调整。

从错误输出中出现的
CreateProcess
判断,我假设您正在Windows下运行
make

这意味着没有
rm
命令,您应该使用
del
,并且
-rf
标志也应该相应地调整。

OBJS=$(addprefix$(OBJ_DIR)/,$(patsubst%.c,%.o,$(notdir$(SRCS)))
DELOBJS=$(addprefix.\obj\,$(patsubst%.c,%.o,$(notdir$(SRCS)))
.假冒:干净
清洁:
德尔xxx
del$(DELOBJS)
del
不起作用,因为Windows使用
\
来区分文件路径,所以您必须使用
\path
使用
OBJS
,也就是说,
DELOBJS
我编写的
OBJS=$(addprefix$(OBJ\u DIR)/,$(patsubst%.c,%.o,$(notdir$(SRCS)))
DELOBJS=$(addprefix.\obj\,$(patsubst%.c,%.o,$(notdir$(SRCS)))
.假冒:干净
清洁:
德尔xxx
del$(DELOBJS)

del
不起作用,因为Windows使用
\
来区分文件路径,所以您必须将
OBJS
\path
一起使用,也就是说,我编写的
DELOBJS
无法重现这一点。您的Makefile与GNU Make 3.81和GNU Make 4.2.1完美配合。什么操作系统?当您在命令行上尝试
rm-f*.o
时会发生什么?它会给我同样的错误。我使用的是安装了MinGW和MSYS的windows10“make”和“makecompile”工作得很好,但由于某种原因,“makeclean”总是给我同样的错误。无法重现。您的Makefile与GNU Make 3.81和GNU Make 4.2.1完美配合。什么操作系统?当您在命令行上尝试
rm-f*.o
时会发生什么?它会给我同样的错误。我使用的是安装了MinGW和MSYS的windows10“make”和“make compile”工作得很好,但出于某种原因,“make clean”总是会给我同样的错误。我认为Windows的等价物是
del/Q/S*.o
,假定目标文件最终是
.o
(即mingw GCC),而不是
。obj
(visual studio)谢谢!两个答案都有效!我假设
rm
命令可以工作,因为
make
工作得非常好。如果您仍然想在windows中使用
rm
命令,我建议您看看cygwin(只需谷歌一下),为什么我不能使用rm,尽管控制台(powershell)中有rm?@JFFIGK因为
mingw32 make
使用
cmd
而不是
powershell
,我认为Windows的等价物是
del/Q/S*.o
,假定目标文件最终是
.o
(即mingw GCC),而不是
。obj
(visual studio)谢谢!两个答案都有效!我假设
rm
命令可以工作,因为
make
工作得非常好。如果您仍然想在windows中使用
rm
命令,我建议您看看cygwin(只需谷歌一下),为什么我不能使用rm,尽管控制台(powershell)中有rm?@JFFIGK因为
mingw32 make
使用
cmd
而不是
powershell