dar*_*sky 3 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
Run Code Online (Sandbox Code Playgroud)
有什么问题.INTERMEDIATE?
你可能意味着
.SECONDARY: $(OBJECTS)
Run Code Online (Sandbox Code Playgroud)
因为我认为如果你把它放在.INTERMEDIATE那么对象将永远被删除,你可能不希望这样.我不认为你可以有意义地%.o作为特殊目标的先决条件.
我建议保留目标文件,这样你就不会浪费时间重新编译它们.
跑一次make -p会教你很多关于make知道的规则.
使用remake -x (即重制)非常有用,至少可以调试复杂的Makefile-s.你也可以使用,make -d但我觉得它太冗长了.
您可能需要使用比更好的建设者make如omake.
特殊目标.INTERMEDIATE不适用于%通配符.试试这个:
.INTERMEDIATE: stack.o prefixer.o
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2930 次 |
| 最近记录: |