Makefile干净,不删除* .o文件?

时间:2010-12-26 22:09:39

标签: 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

但它也没有用;(

为什么会这样?

2 个答案:

答案 0 :(得分:6)

make clean无法执行任何操作的一种方法是,如果目录中有一个名为clean的文件,可能是运行make -t clean的结果。这将创建一个文件,因此当您下次运行make clean时,它将显示为最新版本 - 它没有依赖项,因此没有理由运行该操作。

如果您使用GNU Make,请确保您拥有以下行:

.PHONY: clean

这将阻止make -t创建clean并确保操作已完成。

答案 1 :(得分:5)

要检查实际发生的情况,请运行“make clean”并检查该命令的输出。

  1. 什么都没有?然后在当前目录中可能会有一个名为“clean”的文件。取下它,然后再试一次。
  2. 是否以“rm ......”开头?那似乎很正常。
  3. 在所有其他情况下,请告诉我们您获得的确切输出。
  4. 要检查命令是否真正运行,请在“rm”命令之前和之后插入一些“echo”命令。它们被执行了吗?

    最后,您是否区分制表符和空格?在Makefile中,差异很重要。命令必须使用制表符缩进。