我希望目标(* .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。请让我知道,我该如何解决它。提前谢谢。
答案 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中删除空间,它的工作原理。