分页: 1 / 1

写makefile遇到的问题

发表于 : 2018-05-06 11:27
dede666

代码: 全选

all : main.o func.o                                                                                  
        gcc main.o func.o                                                                            
main.o : main.c                                                                                      
        gcc -c main.c                                                                                
func.o : func.c                                                                                      
        gcc -c func.c                                                                                
clean :                                                                                              
        rm `ls | grep -v ^main.c$ | grep -v ^func.c$ | grep -v ^makefile$ | grep -v ^jack.h$ `                                                                                                         
写clean 为了删除 除了 main.c func.c jack.h makefile这四个文件之外的文件
在执行 make clean时 为啥无法删除 像 main.c~ func.c~ 这样的文件???
难道 $ 没有匹配行尾? 而是当作对变量的引用了?

Re: 写makefile遇到的问题

发表于 : 2018-05-06 14:45
imxys
我怀疑是管道的用法用错了。
您clean目标下面执行的动作是
ls | grep |grep | grep
就相当与是把ls的结果,过滤掉main.c,再过滤了func.c,再过滤了makefile,再过滤jack.h

上面只是我的一面之辞,您可以执行一下脚本里用反引号包含的部分看看是不是您想删除的内容。

Re: 写makefile遇到的问题

发表于 : 2018-05-06 15:15
dede666
imxys 写了:我怀疑是管道的用法用错了。
您clean目标下面执行的动作是
ls | grep |grep | grep
就相当与是把ls的结果,过滤掉main.c,再过滤了func.c,再过滤了makefile,再过滤jack.h

上面只是我的一面之辞,您可以执行一下脚本里用反引号包含的部分看看是不是您想删除的内容。

感谢回复。。没太听懂。。我就是要过滤掉那几个文件呀。。。main.c那几个。。。。除了那几个,删除其他的所有文件

Re: 写makefile遇到的问题

发表于 : 2018-05-06 23:51
maplebeats
grep加上-E?

Re: 写makefile遇到的问题

发表于 : 2018-05-07 11:07
astolia
把$换成$$。
另外别这么写clean规则。明确指定你要删除的文件名,而不是排除部分后全删。比如 rm -f *.o *~

Re: 写makefile遇到的问题

发表于 : 2018-05-08 15:19
comero
解决了吗?
感觉没问题啊,imxys 指的是先输出看看对不对,对的就得在别的方面找问题了。