makefile notdir 命令
我的源文件不在我需要执行 ../ 或 ../../ 操作的目录中。
之后,我需要更改源文件名,例如: ../ex/test.c 更改为 obj/test.o
,命令:
$(OBJDIR) $(notdir $(SOURCECODE:.c=.o))
但是只有 $(SOURCECODE 中的第一个文件名)
(../ex/test.c
) 被正确重命名为 obj/test.o,其余的都看起来像 *.o
,没有目录信息。
my source files are not inside of one directory which I need to do ../ or ../../ stuff.
after that, I need to change source file name for example: ../ex/test.c to obj/test.o
with this: command:
$(OBJDIR) $(notdir $(SOURCECODE:.c=.o))
however only first filename in $(SOURCECODE)
(../ex/test.c
) is correctly renamed to obj/test.o, the rest all look like *.o
, without directory information.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是因为您将
$(OBJDIR)
添加到列表中,如下所示:obj/
+foo.c bar.c baz.c
给出obj/foo.c bar.c baz.c
,这不是你想要的。要将目录添加到列表中的每个文件,请使用
addprefix
函数:That's because you prepend
$(OBJDIR)
to the list as is:obj/
+foo.c bar.c baz.c
givesobj/foo.c bar.c baz.c
, which is not what you want.To add directory to each file in your list use
addprefix
function: