makefile notdir命令

时间:2011-12-29 18:26:06

标签: makefile gnu-make

我的源文件不在我需要做的一个目录中../或../../ stuff。

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

用这个:命令:

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

然而只有$(SOURCECODE)../ex/test.c)中的第一个文件名被正确地重命名为obj / test.o,其余的都看起来像*.o,没有目录信息。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

这是因为您按原样$(OBJDIR)添加到列表中:obj/ + foo.c bar.c baz.c提供obj/foo.c bar.c baz.c,这不是您想要的。

要将目录添加到列表中的每个文件,请使用addprefix功能:

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