为什么我的Makefile规则不删除.o文件?

问题描述 投票:1回答:1

我的Makefile有效,但是调用main.o时仍在创建make文件。我一直在通过Stack Overflow寻找类似我的主题,但我一直无法理解原因。

这是Makefile的内容:

EXEC=program
SOURCES=main.c
OBJECTS=$(SOURCES:.c=.o)
CC=gcc -pthread -lpthread
CFLAGS=-std=gnu99 -g

.PHONY: clean

default: $(EXEC)

main.o: main.c
clean:
    -rm *.o $(objects) program

%.o: %.c
    $(CC) -o $@ -c $< $(CFLAGS)

$(EXEC): $(OBJECTS)
    $(CC) -o $@ $^
makefile object-files
1个回答
0
投票

如果要在构建步骤后删除目标文件,只需将rm -f *.o命令附加到$(EXEC)目标。

此外,注释中还指出了一些注意事项:

  • Makefile变量名称区分大小写。 objectsOBJECTS都不能使用。

  • 而不是在program目标中对clean进行硬编码,而应使用$(EXEC)。这样,您不必每次更改程序名称时都进行更改。

  • 您通常希望在编译后保留.o文件,因此在进行很小的更改后就不必重新编译所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.