我正在尝试为大学项目的简单计算器制作一个生成文件。我需要完成它,我在网上搜索了教程,最终找到了这段代码:
IDIR =include
CC=gcc
CFLAGS=-I$(IDIR)
ODIR=obj
LDIR=lib
SDIR=src
LIBS=-lm
_DEPS = calc.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = calc.o libcalc.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: $(SDIR)/%.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
calc: $(OBJ)
gcc -o $@ $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~
make命令的输出是
gcc -c -o obj/calc.o calc.c -I../include
Assembler messages:
Fatal error: can't create obj/calc.o: No such file or directory
make: *** [obj/calc.o] Error 1
我的教授没有给我们任何指导或指示,所以我真的迷失了。
我的项目分为三个文件夹:lib
, src
and include
. src
包含项目的源代码,名为calc.c
, include
包含名为calc.h
, and lib
包含名为的库libcalc.c
.
编辑:我发现了这个错误,那就是obj
目录下src
没有被创建。但是,它仍然不起作用。新的错误消息是:
make: *** No rule to make target `obj/libcalc.o', needed by `calc'. Stop.
编辑2:我刚刚将 libcalc.c 从 lib 移动到 obj 并且工作正常。不理想,但它满足了我的需要。