我的makefile出了什么问题,最后一行永远不会执行?

时间:2013-07-17 11:49:09

标签: c makefile gnu-make

我必须创建一个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还是我的方式还可以?

1 个答案:

答案 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?