c - Makefile 不删除中间文件

标签 c makefile gnu-make

我的 Makefile 没有删除中间文件。我已经设置了 .INTERMEDIATE。这是我的 Makefile:

OBJECTS=prefixer.o stack.o
CFLAGS=-Werror -Wmissing-prototypes -g
LIBS=-lm
CC=gcc

prefixer : $(OBJECTS)
    $(CC) -o prefixer $(OBJECTS) $(LIBS)

prefixer.o : stack.h
    $(CC) -c prefixer.c -o $@ $(CFLAGS)
stack.o : stack.c stack.h
    $(CC) -c stack.c -o $@ $(CFLAGS)

.INTERMEDIATE: %.o

.PHONY: clean
clean : 
    -rm prefixer *.o

.INTERMEDIATE 有什么问题?

最佳答案

参见 Gnu make special targets对于 .INTERMEDIATE

的角色

你可能是说

 .SECONDARY:  $(OBJECTS)

因为我认为如果您放置 .INTERMEDIATE,那么对象将始终被删除,而您可能不希望这样。我认为您不能有意义地将 %.o 作为特殊目标的先决条件。

我建议保留目标文件,这样您就不会浪费时间重新编译它们。

运行一次 make -p 会告诉你很多关于 make 知道的规则。

使用 remake -x(即 remake)非常有用,至少对于调试复杂的 Makefile-s 是这样。您也可以使用 make -d,但我觉得它太冗长了。

您可能希望使用比 make 更好的构建器,例如omake .

关于c - Makefile 不删除中间文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709470/

相关文章:

C 结构体 : segmentation fault

shell - 什么是 .shar 文件?

ubuntu - 没有为 nginx pagespeed 模块制作目标模块的规则

makefile - 如果单元测试失败,则 make 失败

linux - 运行并行 make 时出错

c++ - 如何在目录中查找并查找具有特定扩展名的所有文件

c - 我可以使用 gdb 的 x 命令打印内存,但是如果我使用 printf,则会出现段错误

c - 如何使用 eof 计算字符串的字母数 (ansi c)

c - 尝试编译简单的inotify程序

c - 为 Automake 文件中的一个程序设置预处理器指令