在makefile中使用带有自动变量的函数

时间:2017-02-04 11:22:13

标签: function variables makefile

我正在尝试编写一个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中的函数一起使用?如果是这样,我该如何解决?

1 个答案:

答案 0 :(得分:3)

如果没有模式,

patsubst什么都不做,请尝试$(patsubst build/obj/%,source/%,$@)