Makefile在指定包含目录路径的OBJDIR时失败

时间:2013-05-22 11:39:35

标签: makefile gnu-make

我希望目标(* .o和.a)位于特定目录上,而不是位于make当前正在运行的同一目录上。我从GUN中找到以下代码来创建特定目录的目标;如果我指定OBJDIR:= objdir,它运作良好;但是如果我指定OBJDIR:= / home / user / mytarget

,则makefile会失败
 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一样指定条带:= $(strip $(TARGET))其中我的目标是/ home / user / mytarget。请让我知道,我该如何解决它。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果OBJDIR := objdir我不知道它是如何运作的,并且您将遇到$(OBJDIR):规则的问题,但我认为此更改将解决您的问题:< / p>

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

答案 1 :(得分:0)

最后我得到了答案: 我发现有一个空格来声明TOP_DIR(用空格标记_)

TOP_DIR:= / home / usr / _ 所以当我回应OBJDIR时,

DIR:= mytarget OBJDIR:= $(剥离$(TOP_DIR)$(DIR))

OBJDIR = / home / usr / _mytarget

哪个错了;从TOP_DIR中删除空间,它的工作原理。