我有类似于以下一个makefile:makefile文件有多个依赖单个文件
SRCS = a.c b.cpp
OBJS = objs/a.o objs/b.o
all: $(OBJS)
objs/%.o: %.c
gcc -c $< -o [email protected]
objs/%.o: %.cpp
gcc -c $< -o [email protected]
看来工作。但我不明白为什么。 它为什么不尝试生成a.cpp和b.c?
当我读到它:a.cpp是objs/a.o的先决条件,它应该尝试生成它。并且因为它没有为它找到匹配的规则 - 它应该失败
我在哪里错了?
P.S - 我使用-r -R避免内建规则
你能指导我提到它吗?我在GNU make中查找它并找不到它 – user972014 2014-11-21 09:12:10
@ user972014:本手册在[模式规则](http://www.gnu.org/software/make/manual/make.html#Pattern-规则)和[它们如何匹配](http://www.gnu.org/software/make/manual/make.html#Pattern-Match)。我不知道有一个参考文件明确指出先决条件清单并未组合,但它隐含在这些章节中。 – Beta 2014-11-21 13:08:07
这里。我发现它:“只有存在与文件名匹配的目标模式时,才可以使用模式规则构建给定文件,并且该规则中的所有先决条件都存在或可以构建” – user972014 2014-11-21 13:48:21