2011-12-29 225 views
1

我的源文件不在一个目录中,我需要做的../或../../东西。makefile notdir命令

在那之后,我需要例如改变源文件名:../ex/test.c to obj/test.o

与此:命令:

$(OBJDIR) $(notdir $(SOURCECODE:.c=.o)) 

但是仅第一个文件名在$(SOURCECODE)../ex/test.c)正确重命名为OBJ /测试.o,其余全部看起来像*.o,没有目录信息。

回答

4

那是因为你在前面加上$(OBJDIR)到列表中是:obj/ + foo.c bar.c baz.cobj/foo.c bar.c baz.c,这是不是你想要的。

到列表中使用添加目录到每个文件addprefix功能:

$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o))) 
4
$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o))) 
+0

哦,你快。 :) – 2011-12-29 18:37:58

+0

@EldarAbusalimov:但你写了更好的解释:-)。 +1。 – thiton 2011-12-29 18:38:48