我必须创建一个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

我的问题是这条线路从未开通过。我是说,不管是什么,最后一句话从来没有被执行过。有线索吗?
另一个问题,是prog应该Mod3.o : Mod3.c Mod3.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发生变化时重新编译prog.c?

关于c - 我的makefile有什么问题,最后一行从不执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17699002/

10-12 16:09