递归地使用obj文件进行链接

时间:2017-04-19 06:33:09

标签: c makefile

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

它应该从目录递归。可能我错过了处理这个问题的正确方法。任何人都有消化,请告诉我。

1 个答案:

答案 0 :(得分:3)

假设您正在使用GNU make

A: $(addprefix $(OBJDIR)/,$(OBJ))
A: $(patsubst %,$(OBJDIR)/%,$(OBJ))
A: $(foreach obj,$(OBJ),$(OBJDIR)/$(obj))

将会做同样的事情。