我正在尝试编写一个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中的函数一起工作?如果是这样,我该如何修复它呢?
发布于 2017-02-04 22:25:18
如果没有模式,patsubst什么也做不了,试试$(patsubst build/obj/%,source/%,$@)
https://stackoverflow.com/questions/42039764
复制相似问题