gnu make:如何连接两个字符串
鉴于这一行:
program_OBJS := ${program_SRCS:.cpp=.o}
我想将 .o
附加到每个文件名,而不是用 .o
替换 .cpp
。
我该怎么做?
Given the line:
program_OBJS := ${program_SRCS:.cpp=.o}
I would like to append .o
to each filename instead of replacing .cpp
with .o
.
How do I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
怎么样:
显然,您可以将结果保存到一个新变量中。
How about this:
Obviuosly, you could save the result to a new variable.
GNU make 有 addsuffix 功能
GNU make has addsuffix function
要只是将某些内容附加到空格分隔的项目列表中,您可以使用:
使用替换方法(就像您在问题中所示):
但为此列表必须包含.cpp< /em> 就足够了,否则替换将不会发生。
To just append something to a list of space separated items you can use:
To use the substitution method (like you show in your question):
but for that the list must contain the .cpp suffices, or the substitutions will not occur.
更短的替代方案,使用模式替换:
program_OBJS := ${program_SRCS:%=%.o}
Shorter alternative, using a pattern substitution:
program_OBJS := ${program_SRCS:%=%.o}
另一种工作方式与扩展名无关:
${program_SRCS:=.o}
One more way working regardless of extension:
${program_SRCS:=.o}
只是猜测
program_OBJS := ${program_SRCS:.cpp=.cpp.o}
Just a guess
program_OBJS := ${program_SRCS:.cpp=.cpp.o}