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

nac*_*o4d 5 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
Run Code Online (Sandbox Code Playgroud)

在它用之前

$(RM) *.o testlfunction
Run Code Online (Sandbox Code Playgroud)

但它也不起作用;(

为什么是这样?

Jon*_*ler 6

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

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

.PHONY: clean
Run Code Online (Sandbox Code Playgroud)

这将停止make -t创建clean并确保操作运行.


Rol*_*lig 5

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

  1. 没事吗 然后,当前目录中可能会有一个名为“ clean”的文件。删除它,然后再试一次。
  2. 它以“ rm ...”开头吗?那似乎很正常。
  3. 在其他所有情况下,请告诉我们您获得的确切输出。

要检查命令是否真正运行,请在“ rm”命令之前和之后插入一些“ echo”命令。他们被处决了吗?

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