我有这个Makefile
,每次我make
进入控制台时,它都会重建整个项目,我知道这是某种.PHONY
错误,但我无法弄清楚。 / p>
这里是Makefile
:
all: start run
run: prog.o move prog
prog: prog.o
gcc object/prog.o -o exec/prog
prog.o: src/prog.c src/prog.h
gcc -c src/prog.c
move:
mv *.o object
start:
mkdir -p exec object
clean:
rm -rf object exec
.PHONY: start clean move run
我知道也有类似的话题,但是我看不出我的错误在哪里。
答案 0 :(得分:0)
prog.o
和prog
在当前目录中均不存在(并且所有其他目标都是虚假的)。那你期望什么?实际上,您每次都必须重新构建所有目标。
PROG = exec/prog
OBJ = object/prog.o
SRC = src/prog.c src/prog.h
all: $(PROG)
$(PROG): $(OBJ) | exec
gcc $^ -o $@
$(OBJ): $(SRC) | object
gcc -c $< -o $@
exec object:
mkdir -p $@
clean:
rm -rf exec object
.PHONY: all clean