makefile没有清理所有内容

makefile没有清理所有内容,makefile,Makefile,我试图弄明白为什么我的makefile会留下所有的*.o文件。clean:部分清楚地包含: rm*.o*.s*.bc fib fact1 fact2*~ 我尝试过在rm中添加-f和其他几个参数,但没有成功。是什么导致这些不被移除?这是完整的makefile。我称之为 make -f Makefile OFILES=fib.o OFILES1=事实1.o OFILES2=事实2.o CPATH=~/cse/llvm/bin/ LLVMASY=$(CPATH)llvmas LLVMOPT=$(C

我试图弄明白为什么我的makefile会留下所有的*.o文件。
clean:
部分清楚地包含:

rm*.o*.s*.bc fib fact1 fact2*~

我尝试过在rm中添加-f和其他几个参数,但没有成功。是什么导致这些不被移除?这是完整的makefile。我称之为

make -f Makefile

OFILES=fib.o
OFILES1=事实1.o
OFILES2=事实2.o
CPATH=~/cse/llvm/bin/
LLVMASY=$(CPATH)llvmas
LLVMOPT=$(CPATH)opt
LLVMLC=$(CPATH)有限责任公司
AS=铿锵-c
LD=叮当声
全部:fib事实1事实2
fib:$(文件)
$(LD)$(OFILES)$(LIBS)-o$@
事实1:$(第1部分)
$(LD)$(OFILES1)$(LIBS)-o$@
事实2:$(第2部分)
$(LD)$(OFILES2)$(LIBS)-o$@
%.o:%.s
$(AS)$<-o$@
%.s:%公元前
$(LLVMLC)$<-O=3-tailcallopt-O$@
%.bc:%.llvm
$(LLVMASY)$<-o$@
清洁:
rm*.o*.s*.bc fib事实1事实2*~

编辑:我应该添加所有*.s和*.bc文件都已成功删除。只保留*.o文件



免责声明:这是家庭作业,但这不是我正在评估的部分。我的问题纯粹是出于好奇

可能已经存在一个
clean
文件。使用
ls-l clean
进行检查,然后在终端中执行
rm-v clean

此外,请使用
/bin/ls-l-s*.o
检查此类文件的所有权。如果在某个时候你做了一个
sudo make
,它们可能是root所有的,因此普通用户不能
rm

顺便说一句,
make
将使用
Makefile
(它尝试按该顺序使用
GNUmakefile
Makefile
Makefile
),因此
-f Makefile
通常是不必要的

读这本书

您应该有
clean
a,例如在
clean:
规则之前添加

 .PHONY: clean
也可以使用
remake-x
(或者在您的情况下使用
remake-x clean
)调试
Makefile


在您的案例中,
Makefile
-s中的默认目标是第一个目标,
all
(也应该标记为
.PHONY
BTW)。要清理,请运行
makeclean

可能已经存在
clean
文件。使用
ls-l clean
进行检查,然后在终端中执行
rm-v clean

此外,请使用
/bin/ls-l-s*.o
检查此类文件的所有权。如果在某个时候你做了一个
sudo make
,它们可能是root所有的,因此普通用户不能
rm

顺便说一句,
make
将使用
Makefile
(它尝试按该顺序使用
GNUmakefile
Makefile
Makefile
),因此
-f Makefile
通常是不必要的

读这本书

您应该有
clean
a,例如在
clean:
规则之前添加

 .PHONY: clean
也可以使用
remake-x
(或者在您的情况下使用
remake-x clean
)调试
Makefile


在您的案例中,
Makefile
-s中的默认目标是第一个目标,
all
(也应该标记为
.PHONY
BTW)。要进行清理,请运行
makeclean
如果您使用
make-f Makefile
调用
make
,那么您没有调用
clean
目标,您将调用第一个(
all
)目标

尝试:


如果您正在使用
make-f Makefile
调用
make
,那么您没有调用
clean
目标,您将调用第一个(
all
)目标

尝试:


我在问题后面加了一个编辑。我忘了说clean可以在命令中的所有其他文件扩展名上工作。只有.o不能删除。我相信这个Makefile对于教授从多个学生那里自动评分是必要的。
Makefile
对于构建软件很有用。您应该花时间了解更多信息(因为对于C或C++中的实际编程项目,使用
make
-或其他生成器几乎是强制性的)。GNU make文档有一个很好的教程部分。我在问题后面添加了一个编辑。我忘了说clean可以在命令中的所有其他文件扩展名上工作。只有.o不能删除。我相信这个Makefile对于教授从多个学生那里自动评分是必要的。
Makefile
对于构建软件很有用。您应该花时间了解更多信息(因为对于C或C++中的实际编程项目,使用
make
-或其他生成器几乎是强制性的)。GNU make文档有一个很好的教程部分。
ls-ls*.o
给出了什么?fact1.o fact2.o fib.oth这不是
ls-ls*.o
的输出;每个文件都应该有一行,包括所有者、权限和mtime。
ls
-ls
选项非常重要。或者尝试
/bin/ls-l-s*.o
并相应地编辑您的问题。
rm*.o
从命令行执行什么操作?rm*.o删除所有的*.o文件。它只是无法从Makefile工作。这是最奇怪的事情。
ls-ls*.o
给出了什么?fact1.o fact2.o fib.oth这不是
ls-ls*.o
的输出;每个文件都应该有一行,包括所有者、权限和mtime。
ls
-ls
选项非常重要。或者尝试
/bin/ls-l-s*.o
并相应地编辑您的问题。
rm*.o
从命令行执行什么操作?rm*.o删除所有的*.o文件。它只是无法从Makefile工作。这是最奇怪的事情。“清除”成功地删除了其余的文件。我现在很好奇,既然“make-fmakefile”不执行整个rm函数,我应该如何正确地调用Makefile。有人告诉我,教授想把它放在我们的.zip里,这样他就可以用s给它们评分了
$ make clean