2013-05-22 209 views
0

我希望目标(* .o和.a)位于特定目录上,而不是位于make当前正在运行的同一目录中。我从GUN的代码中找到用于在特定目录上创建目标的代码;如果我指定OBJDIR:= objdir;但如果我指定的makefile OBJDIR失败:= /家庭/用户/ mytargetMakefile在指定包含目录路径的OBJDIR时失败

OBJDIR := objdir 
OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o) 

$(OBJDIR)/%.o : %.c  
      $(COMPILE.c) $(OUTPUT_OPTION) $< 

all: $(OBJS) 

$(OBJS): | $(OBJDIR) 

$(OBJDIR): 
      mkdir $(OBJDIR) 

我试图指定如OBJDIR条:= $(带$(TARGET))其中,我的目标是/ home /用户/ mytarget。请让我知道,我该如何解决它。提前致谢。

回答

0

我不知道它是如何工作的,如果OBJDIR := objdir,而你将不得不与$(OBJDIR):规则的麻烦,但我认为这种变化将解决您的问题:

$(OBJDIR)/%.o : %.c 
    $(COMPILE.c) $(OUTPUT_OPTION) $< -o [email protected] 
+0

我仍然发现问题。我对齐了Makefile,以便你现在很容易理解。 – Viswesn

0

最后我得到的答案: 我发现有上宣布TOP_DIR空间(标有_空间)

TOP_DIR:= /家庭的/ usr/_ 所以当我echo'ed OBJDIR的,

DIR:= mytarget OBJDIR:= $(条$(TOP_DIR)$(DIR))

OBJDIR = /家庭的/ usr/_mytarget

这是错误的;从TOP_DIR中删除空间,它工作。

+0

编辑makefile时,最好使用具有“makefile editing”模式的编辑器。这些模式将允许您可视化makefile发生的空白问题。 – MadScientist

相关问题