0

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

4

1 回答 1

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?

于 2013-07-17T11:53:08.930 回答