0
我试图将目标文件(.o文件)生成到一个单独的文件夹中。它运作良好。问题是生成的目标文件没有放入我想要的文件夹中。以下是我的makefile:把目标文件放到一个单独的文件夹中GNU make
OBJDIR :=objdir
SOURCES=$(wildcard ./src/*.c)
OBJS=$(patsubst %.c, %.o, $(SOURCES))
vpath %.h ./src
vpath %.c ./src
optest : $(OBJS)
cc -o optest $(OBJS)
$(OBJDIR)/main.o : add.h mul.h did.h
$(OBJDIR)/add.o : add.h
$(OBJDIR)/mul.o : mul.h
$(OBJDIR)/did.o : did.h
$(OBJS): | $(OBJDIR)
$(OBJDIR):
mkdir $(OBJDIR)
clean :
rm -rf $(OBJDIR)
rm -f optest
我的.h和.c文件被放在./src
文件夹中。上面的makefile的结果是所有的目标文件都放在./src
文件夹中,而不是objdir
文件夹。任何人都可以提出任何建议吗?
您正在覆盖'%.c':这里的文件的规则:'$(OBJDIR)/main.o:add.h mul.h did.h' –