我有一个看起来像这样的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,它将在创建新二进制文件之前自动删除code1code2的现有二进制文件。

我试图将这些行放在makefile的末尾,但它不起作用
clean:
    rm -f $@
    echo Clean done

什么是正确的方法?

最佳答案

在makefile语言中,$@表示“目标名称”,因此rm -f $@转换为rm -f clean

您需要向rm指定要删除的确切内容,例如rm -f *.o code1 code2

09-07 04:29