没有规则来制定目标

ret*_*n 0 1 c makefile gnu-make

我正在尝试遵循本教程:http: //www.cs.colby.edu/maxwell/courses/tutorials/maketutor/

当我在最后一个makefile(#5)时,"make"无法继续(错误提示)No rule to make target "obj/hellomake.o", needed by "hellomake".这段代码试图编译源文件并将libs,srcs,objs放入相应的文件夹中.

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 *~ core $(INCDIR)/*~  
Run Code Online (Sandbox Code Playgroud)

我已经盯着它看了一个小时,这不是一段复杂的代码,但我无法解决这个问题.我怀疑问题发生在这里:

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

hellomake: $(OBJ)
    gcc -o $@ $^ $(CFLAGS) $(LIBS)
Run Code Online (Sandbox Code Playgroud)

我只是没有看到任何错误.请帮忙.

del*_*ium 6

他们的剧本很好!这样做:

1°)创建目录"include"和"src"

mkdir include; mkdir src

2°)在"src"中创建一个"obj"文件夹

mkdir obj

3°)您的目录树应如下所示:

$:~/parentDir$ tree
.
??? include
?   ??? hellomake.h
??? src
    ??? hellofunc.c
    ??? hellomake
    ??? hellomake.c
    ??? Makefile
    ??? obj
        ??? hellofunc.o
        ??? hellomake.o

4°)现在只需在src目录中使用make命令.:d