8

鉴于这一行:

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

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

我怎么做?

4

6 回答 6

9

GNU make 有 adduffix功能

于 2010-06-21T09:57:27.337 回答
7

要将某些内容附加到空格分隔的项目列表中,您可以使用

program_OBJS := $(foreach program,$(program_SRCS),$(program).o)

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

program_OBJS := $(program_SRCS:.cpp=.cpp.o)

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

于 2010-06-21T09:41:19.350 回答
7

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

于 2010-06-24T20:01:33.740 回答
6

这个怎么样:

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

STRING1:=$(STRING1)$(STRING2)

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

于 2017-12-04T07:40:11.893 回答
3

无论扩展如何,另一种工作方式:${program_SRCS:=.o}

于 2014-06-19T13:58:01.397 回答
1

只是猜测program_OBJS := ${program_SRCS:.cpp=.cpp.o}

于 2010-06-21T09:38:19.270 回答