我正在尝试编写一个make文件,将源目录下的所有C文件编译成/ build / obj中的相同文件结构
例如,我的一个c文件可能是/source/foo/bar.c
我想要编译并放入/build/obj/foo/bar.o
以下是我在实验时到目前为止所得到的:
FILES = $(shell find source/ -type f -name '*.c')
OBJS = $(patsubst $(SOURCE)/%.c,$(OBJ)/%.o, $(FILES))
all: build/obj/foo/bar.o
echo "DONE"
%.o:
echo $(patsubst build/obj, source, $@)
然而,patsubst功能似乎并没有使用自动变量$ @,而是我得到" build / obj / foo / bar.o"。
为什么自动变量不能与make中的函数一起使用?如果是这样,我该如何解决?
答案 0 :(得分:3)
patsubst
什么都不做,请尝试$(patsubst build/obj/%,source/%,$@)