鉴于这一行:
program_OBJS := ${program_SRCS:.cpp=.o}
我想将.o
附加到每个文件名,而不是将.cpp
替换为.o
。
我该怎么做?
答案 0 :(得分:9)
GNU make有addsuffix函数
答案 1 :(得分:6)
更短的替代方案,使用模式替换:program_OBJS := ${program_SRCS:%=%.o}
答案 2 :(得分:5)
将 附加到您可以使用的空格分隔项列表中:
program_OBJS := $(foreach program,$(program_SRCS),$(program).o)
使用替换方法(就像您在问题中显示的那样):
program_OBJS := $(program_SRCS:.cpp=.cpp.o)
但是为此,列表必须包含 .cpp ,否则不会发生替换。
答案 3 :(得分:3)
无论扩展程序如何,还有一种工作方式:${program_SRCS:=.o}
答案 4 :(得分:3)
这个怎么样:
STRING1:="foo"
STRING2:="bar"
STRING1:=$(STRING1)$(STRING2)
很明显,您可以将结果保存到新变量中。
答案 5 :(得分:1)
只需猜测program_OBJS := ${program_SRCS:.cpp=.cpp.o}