makefile没有达到“干净”以删除.o文件

时间:2013-10-24 06:02:44

标签: makefile

CXX=clang++ $(CXXFLAGS)
CXXFLAGS=-O2
OFILES=a.o b.o c.o

.SUFFIXES: .o .cpp

main: $(OFILES)
    $(CXX) $(OFILES)

clean: rm -f *.o *~ 

a.o: a.cpp a.h
b.o: b.cpp b.h
c.o: c.cpp

.o文件未被删除。当我尝试在rm之前放置@echo时,似乎也不会发生这种情况。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

就像现在一样,clean目标取决于rm-f*.o和{{1} }。因此,只有在修改了这些“文件”后才会运行。

该行

*~

应该是两个

clean: rm -f *.o *~ 

编写makefile的常用方法是这样的:

clean:
    rm -f *.o *~ 

在您的情况下,如果您希望“默认”目标为# Variables VARIABLE1=value1 VARIABLE2=value2 # etc... # Targets # The first target is the "default" target when `make` is invoked # without any specific target default: some_other_target # Other targets... ,那么如果您使用上面给出的模板,则clean取决于default目标:

clean

答案 1 :(得分:1)

@Tidus Smith。如果要在编译后删除对象,可以在$(CC)之后添加rm命令。

main: $(OFILES)
    $(CXX) $(OFILES)
    rm -f *.o *~ 

这确保在编译完成后,将删除所有.o文件和*〜文件。