Makefile Make:将所有扩展名更改为.o

Makefile Make:将所有扩展名更改为.o,makefile,gnu,file-extension,Makefile,Gnu,File Extension,我有一个makefile,其中有一个名为SOURCES的数组。在这个数组中,有一个C文件,并且有C++文件。但是,我想改变数组中的每个路径的扩展,无论是C还是C++到 .O/COD>。我怎么能这样做?我知道为了将一个扩展名改为另一个扩展名,我可以这样做:对象= $(源:.c= .o),但是我也希望为C++文件这样做。 < P>有几种不同的选项。 使用/并进行两次替换: OBJECTS := $(filter %.o,$(SOURCES:.c=.o)) OBJECTS += $(filter %.

我有一个makefile,其中有一个名为
SOURCES
的数组。在这个数组中,有一个C文件,并且有C++文件。但是,我想改变数组中的每个路径的扩展,无论是C还是C++到<代码> .O/COD>。我怎么能这样做?我知道为了将一个扩展名改为另一个扩展名,我可以这样做:<代码>对象= $(源:.c= .o),但是我也希望为C++文件这样做。

< P>有几种不同的选项。

使用/并进行两次替换:

OBJECTS := $(filter %.o,$(SOURCES:.c=.o))
OBJECTS += $(filter %.o,$(SOURCES:.cpp=.o))
或者,如果您知道
源文件中只有
.c
.cpp
文件(或者希望支持
源文件中的其他扩展名转换为
.o
),您可以使用和:

只要用这个:

OBJECTS=$(来源:
.cpp
=.o)

对于文件扩展名
.cpp

OBJECTS := $(addsuffix .o,$(basename $(SOURCES))