首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我的Makefile中的rm -f命令不起作用

我的Makefile中的rm -f命令不起作用
EN

Stack Overflow用户
提问于 2019-05-21 02:09:48
回答 2查看 156关注 0票数 0

参考以下代码,命令rm -f *.o在编译过程之后不会删除realnumsets.ogestore.o文件。对于如何删除这些*.o文件,您有什么建议吗?

代码语言:javascript
复制
~/workspace$ more Makefile
eseguibile : gestore.o realnumsets.o Makefile
        gcc -ansi -Wall -O gestore.o realnumsets.o -o myprog

gestore.o : gestore.c realnumsets.h Makefile
        gcc -ansi -Wall -O -c gestore.c

realnumsets.o : realnumsets.c realnumsets.h Makefile
        gcc -ansi -Wall -O -c realnumsets.c

clean :
        rm -f *.o
代码语言:javascript
复制
~/workspace$ make 
gcc -ansi -Wall -O -c gestore.c
gcc -ansi -Wall -O -c realnumsets.c
gcc -ansi -Wall -O gestore.o realnumsets.o -o myprog
代码语言:javascript
复制
~/workspace$ ls -la
total 60
drwx------ 2 ubuntu ubuntu  4096 May 20 17:57 ./
drwxrwxr-x 9 ubuntu ubuntu  4096 May 20 14:33 ../
-rw------- 1 ubuntu ubuntu   289 May 20 16:35 Makefile
-rw------- 1 ubuntu ubuntu  6271 May 20 14:45 gestore.c
-rw------- 1 ubuntu ubuntu  4624 May 20 17:57 gestore.o
-rwx------ 1 ubuntu ubuntu 13588 May 20 17:57 myprog*
-rw------- 1 ubuntu ubuntu  5101 May 20 14:44 realnumsets.c
-rw------- 1 ubuntu ubuntu   584 May 20 14:08 realnumsets.h
-rw------- 1 ubuntu ubuntu  3792 May 20 17:57 realnumsets.o

预期结果:

代码语言:javascript
复制
~/workspace$ ls 
Makefile  gestore.c  myprog*  realnumsets.c  realnumsets.h 

实际结果:

代码语言:javascript
复制
~/workspace$ ls 
Makefile  gestore.c  gestore.o  myprog*  realnumsets.c  realnumsets.h  realnumsets.o
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-21 02:34:42

make实用程序在运行时针对特定的目标工作。如果你指定了一个目标,那将是make工作的目标。默认情况下,如果不指定目标,将创建第一个目标(不是以句点开头)。因此,您的简单调用只需

代码语言:javascript
复制
make

就会开始做目标任务了。在创建eseguibile所需的目标gestore.o和realnumsets.o中进行拉入。干净的目标对于eseguibile是不需要的,所以它不会运行。

理论上,您可以将干净的目标添加到eseguibile中目标列表的末尾。然而,这将是一种不同寻常的做事方式。更常见的情况是,您只需单独调用:

代码语言:javascript
复制
make clean

在运行make for the build之后。如果您想要在构建完成之前进行清理,您可以使用以下方法来完成:

代码语言:javascript
复制
make clean eseguibile

清理工作将首先完成,因此您将开始构建新的.o文件。

票数 1
EN

Stack Overflow用户

发布于 2019-05-21 02:12:22

您必须运行make clean才能运行clean目标。只输入make只运行默认目标(eseguibile)及其依赖项。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56226116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档