我有一个与VPATH有关的问题。 我正在玩make文件和VPATH变量。基本上,我从几个不同的地方(由VPATH指定)抓取源文件,并尝试使用我想要的.o文件列表将它们编译到另一个目录($ CURDIR / OBJ /)。 / p>
使用VPATH时,我可以在当前目录以外的任何其他目录中创建.o吗?
答案 0 :(得分:1)
嗯,是的,但你的问题不太正确。
善于发现那里并使用它们来制作这里,但不是相反。 VPATH和vpath告诉make在哪里寻找它需要的东西,但没有相应的指令把它放在除当前目录之外的地方。
如果你想让你的目标文件(OBJECTS = ant.o bee.o)进入另一个目录,比如$(OBJDIR),基本上有三种方法可以做到。
$(OBJECTS): %.o: %.c gcc -c $< -o $@ mv $@ $(OBJDIR)或等效地,去那里建立它们:
$(OBJECTS): %.o: %.c cd $(OBJDIR) ; gcc -c $< -o $@
FULLOBJECTS = $(addprefix $(OBJDIR)/,$(OBJECTS)) $(FULLOBJECTS): $(OBJDIR)/%.o: %.c gcc -c $< -o $@
$(OBJECTS): $(MAKE) -C $(OBJDIR) $@