我正在编写一个Makefile,我有一个包含所有文件的列表(没有src/
或.cpp
),我想将它们转换为build/*.o
。这是我已经尝试过的:
FILES=icxxabi list memory string
OBJECTS=$(echo ("${build/$$FILES[@].o}")[@])
因此对于输入a dir/b c
,它应该输出:
build/a.o build/dir/b.o build/c.o
答案 0 :(得分:4)
使用GNU Make,您可以尝试
OBJECTS=$(patsubst %, build/%.o, $(FILES))
答案 1 :(得分:4)
https://www.gnu.org/software/make/manual/html_node/File-Name-Functions.html#File-Name-Functions:
OBJECTS = $(addprefix build/,$(addsuffix .o,$(FILES)))