makefile问题中的VPATH

时间:2010-04-08 03:49:35

标签: makefile

我有一个与VPATH有关的问题。 我正在玩make文件和VPATH变量。基本上,我从几个不同的地方(由VPATH指定)抓取源文件,并尝试使用我想要的.o文件列表将它们编译到另一个目录($ CURDIR / OBJ /)。 / p>

使用VPATH时,我可以在当前目录以外的任何其他目录中创建.o吗?

1 个答案:

答案 0 :(得分:1)

嗯,是的,但你的问题不太正确。

善于发现那里并使用它们来制作这里,但不是相反。 VPATH和vpath告诉make在哪里寻找它需要的东西,但没有相应的指令把它放在除当前目录之外的地方。

如果你想让你的目标文件(OBJECTS = ant.o bee.o)进入另一个目录,比如$(OBJDIR),基本上有三种方法可以做到。

  1. 在这里构建它们并手动移动它们(这个几乎肯定会让你遇到麻烦):
    $(OBJECTS): %.o: %.c
        gcc -c $< -o $@
        mv $@ $(OBJDIR)
    
    或等效地,去那里建立它们:
    $(OBJECTS): %.o: %.c
        cd $(OBJDIR) ; gcc -c $< -o $@
    
  2. 指定路径并在适当的位置构建它们(对初学者来说可能是最好的):
    FULLOBJECTS = $(addprefix $(OBJDIR)/,$(OBJECTS))
    $(FULLOBJECTS): $(OBJDIR)/%.o: %.c
        gcc -c $< -o $@
    
  3. Call Make there(功能强大,但非常棘手):
    $(OBJECTS):
        $(MAKE) -C $(OBJDIR) $@