我想知道为什么这不会删除/清除运行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)
但它也不起作用;(
为什么是这样?
make clean可能"失败"执行任何操作的一种方法是clean在目录中调用文件,可能是运行的结果make -t clean.这将创建一个文件,因此当您下次运行时make clean,它将显示为最新 - 它没有依赖项,因此没有理由运行该操作.
如果您使用GNU Make,请确保您拥有以下行:
.PHONY: clean
Run Code Online (Sandbox Code Playgroud)
这将停止make -t创建clean并确保操作运行.
要检查实际发生的情况,请运行“ make clean”并检查该命令的输出。
要检查命令是否真正运行,请在“ rm”命令之前和之后插入一些“ echo”命令。他们被处决了吗?
最后,您是否区分了制表符和空格?在Makefile中,区别很重要。命令必须使用制表符缩进。
| 归档时间: |
|
| 查看次数: |
32552 次 |
| 最近记录: |