请原谅我提出简单的问题,但我无法找到问题所在。
我有一个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文件。但最后一个不起作用。
感谢您的任何评论或指导。
答案 0 :(得分:0)
你有一个tabname
目录,但是你没有告诉Make it it。 Make抱怨没有src
。 (有一个hellofunc.c
,但Make并不知道在那里看。)试试这个:
src/hellofunc.c