如何仅为对象和头文件创建make文件?

时间:2017-07-08 17:24:22

标签: c makefile

我正在使用set.h界面执行黑盒测试,我无法访问set.c,我已经获得了目标文件set.o,我需要编写该集合的main.c文件中的一堆测试。如何创建包含set.oset.hmain.c的makefile?

**我已经有了set.o文件,所以我不必使用set.c

重新生成它

我很困惑,因为我只知道如何使用完整的文件。

这是我的模板

CC = clang
CFLAGS = -g -Wall

PROG = example
HDRS = set.h
SRCS = main.c 

OBJDIR = object
OBJS = $(OBJDIR)/main.o $(OBJDIR)/set.o

# compiling rules

$(PROG): $(OBJS) $(OBJDIR)
    $(CC) $(CFLAGS) $(OBJS) -o $(PROG)

$(OBJDIR)/set.o: set.h $(HDRS) $(OBJDIR)
    $(CC) $(CFLAGS) -c set.h -o $(OBJDIR)/set.o

$(OBJDIR)/main.o: main.c $(HDRS) $(OBJDIR)
    $(CC) $(CFLAGS) -c main.c -o $(OBJDIR)/main.o

$(OBJDIR):
    mkdir $(OBJDIR)

clean:
    rm -f $(PROG) $(OBJS)

1 个答案:

答案 0 :(得分:3)

如果您已经拥有set.o文件,则无需为其创建规则,只需使用它即可。还要注意我摆脱了mkdir,因为如果你已经有set.o,它应该已经在对象/对了吗?

CC = clang
CFLAGS = -g -Wall

PROG = example
HDRS = set.h
SRCS = main.c 

OBJDIR = object
OBJS = $(OBJDIR)/main.o

# compiling rules

$(PROG): $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) $(OBJDIR)/set.o -o $(PROG)

$(OBJDIR)/main.o: main.c $(HDRS)
    $(CC) $(CFLAGS) -c main.c -o $(OBJDIR)/main.o

clean:
    rm -f $(PROG) $(OBJS)