Makefile中存在一个小问题。每当我写这篇文章时,效果都很好
OBJDIR:=.obj
OBJ := A.o B.o
。 。
A: $(OBJDIR)/A.o $(OBJDIR)/B.o
$(CC) $(CFLAGS) $(INCLUDEDIR) -o $@ $^
汇编就是这样......
.... -g -O0 -DWITH_POSIX -Iinclude/ -o A .obj/A.o .obj/B.o
但相反,如果我写这个,它只需要第一个目标文件
A: $(OBJDIR)/$(OBJ)
编译然后....
.... -g -O0 -DWITH_POSIX -Iinclude/ -o A .obj/A.o B.o
它应该从目录递归。可能我错过了处理这个问题的正确方法。任何人都有消化,请告诉我。
答案 0 :(得分:3)
假设您正在使用GNU make,
A: $(addprefix $(OBJDIR)/,$(OBJ))
A: $(patsubst %,$(OBJDIR)/%,$(OBJ))
A: $(foreach obj,$(OBJ),$(OBJDIR)/$(obj))
将会做同样的事情。