没有规则来制作目标(在不同的目录中制作项目)

时间:2017-05-10 05:40:38

标签: makefile

请原谅我提出简单的问题,但我无法找到问题所在。 我有一个src目录,包含makefile和obj文件夹。 include个文件夹和lib个文件夹。代码提供了here

IDIR =../include
CC=gcc
CFLAGS=-I$(IDIR)

ODIR=obj
LDIR =../lib

LIBS=-lm

_DEPS = hellomake.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))

_OBJ = hellomake.o hellofunc.o 
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))


$(ODIR)/%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

hellomake: $(OBJ)
    gcc -o $@ $^ $(CFLAGS) $(LIBS)

.PHONY: clean

clean:
    rm -f $(ODIR)/*.o *~  

它给了我以下错误:

gcc -c -o obj/hellomake.o hellomake.c -I../include
make: *** No rule to make target 'obj/hellofunc.o', needed by 'hellomake'.  Stop.

它使用相同的规则来创建.o文件和hellomake文件。但最后一个不起作用。 感谢您的任何评论或指导。

1 个答案:

答案 0 :(得分:0)

你有一个tabname目录,但是你没有告诉Make it it。 Make抱怨没有src。 (有一个hellofunc.c,但Make并不知道在那里看。)试试这个:

src/hellofunc.c