我有一个看起来像这样的Makefile
CXX = g++ -O2 -Wall
all: code1 code2
code1: code1.cc utilities.cc
$(CXX) $^ -o $@
code2: code2.cc utilities.cc
$(CXX) $^ -o $@
我接下来要做的是包含
clean target
,以便每次我运行
make
,它将在创建新二进制文件之前自动删除code1
和code2
的现有二进制文件。我试图将这些行放在makefile的末尾,但它不起作用
clean:
rm -f $@
echo Clean done
什么是正确的方法?
最佳答案
在makefile语言中,$@
表示“目标名称”,因此rm -f $@
转换为rm -f clean
。
您需要向rm
指定要删除的确切内容,例如rm -f *.o code1 code2