使用变量替换的GNU Makefile中的patsubst

使用变量替换的GNU Makefile中的patsubst,makefile,gnu-make,Makefile,Gnu Make,给定以下GNU Makefile代码 ENDING = '\.cpp' OBJ = $(SOURCES:$(ENDING)=.o) # (does not work) 但这并不能取代任何东西 OBJ = $(SOURCES:.cpp=.o) 没有(对于cpp文件)。有没有办法告诉patsubst特定的结尾?或者至少替换所有类型的结尾,比如下面 OBJ = $(SOURCES:.*=.o) # (does not work) 这项工作: ENDING = .cpp OBJ = $(SOURC

给定以下GNU Makefile代码

ENDING = '\.cpp'
OBJ = $(SOURCES:$(ENDING)=.o) # (does not work)
但这并不能取代任何东西

OBJ = $(SOURCES:.cpp=.o)
没有(对于cpp文件)。有没有办法告诉patsubst特定的结尾?或者至少替换所有类型的结尾,比如下面

OBJ = $(SOURCES:.*=.o) # (does not work)
这项工作:

ENDING = .cpp
OBJ = $(SOURCES:$(ENDING)=.o)
这将取代所有结尾:

OBJ = $(addsuffix .o,$(basename $(SOURCES)))
这项工作:

ENDING = .cpp
OBJ = $(SOURCES:$(ENDING)=.o)
这将取代所有结尾:

OBJ = $(addsuffix .o,$(basename $(SOURCES)))

我太专注于regexp了,以至于我没有意识到\可能会引起一个问题:)非常感谢!我太专注于regexp了,以至于我没有意识到\可能会引起一个问题:)非常感谢!