我有以下Makefile:
CC = gcc
OBJS = a.o b.o c.o
EXEC = prog
DEBUG = #-g for debug
CFLAGS = -std=c99 -Wall -Werror $(DEBUG)
$(EXEC) : $(OBJS)
a.o : a.c a.h b.h
b.o : b.c b.h
c.o : c.c c.h b.h
clean:
rm -f $(OBJS) $(EXEC)
它会创建目标文件,但不会创建可执行文件 - prog
。
我该如何解决?
谢谢!
答案 0 :(得分:3)
$(EXEC): $(OBJS)
$(CC) -o $@ $(CFLAGS) $(OBJS)
基本上,当您将多个对象列为依赖项时,不能使用隐式规则,因此您必须编写命令以自行执行。在这种情况下,$@
是$(EXEC)
的简写;它是正在创建的目标。