我通常使用此行OBJECTS = $(SOURCES:.cpp=.o)
将SOURCES中.cpp文件扩展名替换为.o扩展名。
我的项目现在有.c扩展名和.cpp的文件。如何修改该行以使其将所有.c和.cpp扩展名替换为.o?
我不喜欢下面的两行解决方案:
OBJECTS_TMP = $(SOURCES:.cpp=.o)
OBJECTS = $(OBJECT_TMP:.c=.o)
我想要像
这样的东西 OBJECTS = $(SOURCES:(.cpp|.c)=.o)
甚至
OBJECTS = $(SOURCES:.*=.o)
这可能吗?怎么样?谢谢!
答案 0 :(得分:3)
你不能只用速记来做。你必须使用patsubst函数:
OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(SOURCES)))
或者你可以使用其中一个:
OBJECTS = $(patsubst %.cpp,%.o,$(SOURCES:.c=.o))
或者,您可以这样做:
OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))