gnu make:如何连接两个字符串

时间:2010-06-21 09:29:21

标签: makefile gnu gnu-make

鉴于这一行:

program_OBJS := ${program_SRCS:.cpp=.o}

我想将.o附加到每个文件名,而不是将.cpp替换为.o

我该怎么做?

6 个答案:

答案 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}