Makefile 是否将文件清除而不删除*.o文件?
我想知道为什么这不会删除/清理运行make时生成的*.o文件Makefile 是否将文件清除而不删除*.o文件?,makefile,Makefile,我想知道为什么这不会删除/清理运行make时生成的*.o文件 # UNIX Makefile CXX = g++ LD = g++ CXXFLAGS = -g testlfunction: lfunction.o lfunctionlist.o lprocessor.o testlfunction.o $(LD) -o $@ $^ clean: rm *.o testlfunction 以前 $(RM) *.o testlfunction 但它也不起作用;( 这是为什
# UNIX Makefile
CXX = g++
LD = g++
CXXFLAGS = -g
testlfunction: lfunction.o lfunctionlist.o lprocessor.o testlfunction.o
$(LD) -o $@ $^
clean:
rm *.o testlfunction
以前
$(RM) *.o testlfunction
但它也不起作用;(
这是为什么?要检查实际发生的情况,请运行“makeclean”并检查该命令的输出
最后,您是否区分了制表符字符和空格?在Makefiles中,这一区别很重要。命令必须使用制表符缩进。一种方法是,如果目录中有一个名为
clean
的文件,可能是运行make-t clean
。这将创建一个文件,因此当您下次运行make clean
时,它将显示为最新-它没有依赖项,因此没有理由运行该操作
如果您使用GNU Make,请确保您拥有以下线路:
.PHONY: clean
这将阻止
make-t
创建clean
,并将确保操作运行。不,一切正常…rm和$(rm)之间的区别是什么?rm
和$(rm)之间的区别是什么
很可能是RM=RM-f
,如果所列文件中有一个丢失,它不会失败,而仅使用RM
意味着如果所列文件中有任何一个丢失,清理操作将失败。例如,如果您执行make clean all
但clean
失败,那么all
阶段将不会停止ilt。“它不工作”从来都不是一个合适的错误描述。您是否记得确切的错误消息或任何其他输出?