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

Rob*_*nes 6 gnu makefile gnu-make

鉴于这条线:

program_OBJS := ${program_SRCS:.cpp=.o}
Run Code Online (Sandbox Code Playgroud)

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

我怎么做?

Bas*_*evs 9

GNU make具有 addsuffix功能


Veg*_*ger 6

为了只是附加的东西,你可以用空格分隔的项目列表:

program_OBJS := $(foreach program,$(program_SRCS),$(program).o)
Run Code Online (Sandbox Code Playgroud)

要使用替换方法(就像您在问题中显示的那样):

program_OBJS := $(program_SRCS:.cpp=.cpp.o)
Run Code Online (Sandbox Code Playgroud)

但为此,列表必须包含.cpp足够,否则不会发生替换.


slo*_*dog 6

更短的替代方案,使用模式替换: program_OBJS := ${program_SRCS:%=%.o}


PoV*_*oVa 5

这个怎么样:

STRING1:="foo"
STRING2:="bar"

STRING1:=$(STRING1)$(STRING2)
Run Code Online (Sandbox Code Playgroud)

显然,您可以将结果保存到一个新变量中。

  • 当我打印结果时,我得到“foo”“bar”作为串联结果。如何删除不需要的引号? (2认同)