C 什么';我的makefile有什么问题,最后一行永远不会执行?

C 什么';我的makefile有什么问题,最后一行永远不会执行?,c,makefile,gnu-make,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

我必须创建一个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.cmod3.h
从未启动过。我的意思是,最后一行从来没有被执行过,不管它是什么。有线索吗

另一个问题是,
prog.o
应该是
prog.cmod1.hmod2.hmod3.h
还是我做的方式可以?

$(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是否发生变化,都有必要重新编译程序c吗?

$(CC)…
必须直接位于
程序:

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吗