我必须创建一个makefile来创建依赖于三个模块的程序prog
。
我创建了这个makefile:
CC = gcc
CFLAGS = -W -Wall
all : prog
prog : prog.o mod1.o mod2.o Mod3.o
prog.o : prog.c
mod1.o : mod1.c mod1.h
mod2.o : mod2.c mod2.h
Mod3.o : Mod3.c Mod3.h
$(CC) $(CFLAGS) prog.o mod1.o mod2.o Mod3.o -o prog
clean :
rm prog
rm *.o
我的问题是此行Mod3.o : Mod3.c Mod3.h
从未启动过。我的意思是,最后一行从未执行过,无论它是什么。任何线索?
另一个问题,prog.o
应该是prog.c mod1.h mod2.h Mod3.h
还是我的方式还可以?
答案 0 :(得分:4)
行$(CC) ....
必须直接位于prog :
prog : prog.o mod1.o mod2.o Mod3.o
$(CC) $(CFLAGS) prog.o mod1.o mod2.o Mod3.o -o prog
prog.o : prog.c
mod1.o : mod1.c mod1.h
mod2.o : mod2.c mod2.h
Mod3.o : Mod3.c Mod3.h
另一个问题只能由你自己来回答:每当mod1.h或mod2.h改变或不改变时,是否需要重新编译prog.c?