我的源文件不在我需要做的一个目录中 ../ 或 ../../ 东西。
之后,我需要更改源文件名,例如: ../ex/test.c to obj/test.o
用这个: 命令:
$(OBJDIR) $(notdir $(SOURCECODE:.c=.o))
Run Code Online (Sandbox Code Playgroud)
然而,只有$(SOURCECODE)( ../ex/test.c) 中的第一个文件名被正确重命名为 obj/test.o,其余的看起来都像*.o,没有目录信息。
那是因为您$(OBJDIR)按原样添加到列表中:obj/+foo.c bar.c baz.c给出obj/foo.c bar.c baz.c,这不是您想要的。
要将目录添加到列表中的每个文件,请使用addprefix函数:
$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o)))
Run Code Online (Sandbox Code Playgroud)