鉴于这一行:
program_OBJS := ${program_SRCS:.cpp=.o}
我想附加.o
到每个文件名而不是替换.cpp
为.o
.
我怎么做?
GNU make 有 adduffix功能
要将某些内容附加到空格分隔的项目列表中,您可以使用:
program_OBJS := $(foreach program,$(program_SRCS),$(program).o)
要使用替换方法(就像您在问题中显示的那样):
program_OBJS := $(program_SRCS:.cpp=.cpp.o)
但为此,列表必须包含.cpp就足够了,否则将不会发生替换。
更短的替代方案,使用模式替换:program_OBJS := ${program_SRCS:%=%.o}
这个怎么样:
STRING1:="foo"
STRING2:="bar"
STRING1:=$(STRING1)$(STRING2)
显然,您可以将结果保存到一个新变量中。
无论扩展如何,另一种工作方式:${program_SRCS:=.o}
只是猜测program_OBJS := ${program_SRCS:.cpp=.cpp.o}