我无法让路径替换正常工作。我有一堆源文件SOURCES
:
@echo $(SOURCES)
foo.c bar.cpp bah.cxx
我想要一个目标文件列表:
# Imaginary only because nothing works
@echo $(OBJECTS)
foo.o bar.o bah.o
我正在尝试构建OBJECTS
with的列表patsubst
。首先,这会生成源文件和目标文件的列表。除了错误之外,它还会导致重复_main
链接失败。
OBJECTS = $(patsubst %.c, %.o, ${SOURCES}) $(patsubst %.cc, %.o, ${SOURCES}) \
$(patsubst %.cpp, %.o, ${SOURCES}) $(patsubst %.cxx, %.o, ${SOURCES})
其次,这不执行替换。不仅是错的,我在SOURCES
.
OBJECTS = $(patsubst %.c %.cc %.cpp %.cxx, %.o, ${SOURCES})
第三,这会产生原始的源文件列表:
OBJECTS = $(patsubst %.*, %.o, ${SOURCES})
我还尝试使用以下内容,这似乎使文件像兔子一样成倍增加:
OBJECTS = $(SOURCES:.c=.o) $(SOURCES:.cc=.o) \
$(SOURCES:.cpp=.o) $(SOURCES:.cxx=.o)
使用便携式 make 时如何执行简单的扩展替换?