Makefile 为什么GNUMake会忽略我的显式模式规则而使用内置的隐式规则呢?

Makefile 为什么GNUMake会忽略我的显式模式规则而使用内置的隐式规则呢?,makefile,explicit,rule,recipe,Makefile,Explicit,Rule,Recipe,我的makefile有以下规则/配方: %o: %cpp Makefile g++ -Wall -Wextra -MMD -MP -O2 -c -o $@ $< 我的图案没有分隔百分号和分号的点(句点)。通过更改此选项解决问题: %.o: %.cpp Makefile g++ -Wall -Wextra -MMD -MP -O2 -c -o $@ $< %.o:%.cpp生成文件 g++-Wall-Wextra-MMD-MP-O2-c-o$@$< 实际上可以使用内

我的makefile有以下规则/配方:

%o: %cpp Makefile
    g++ -Wall -Wextra -MMD -MP -O2 -c -o $@ $<

我的图案没有分隔百分号和分号的点(句点)。通过更改此选项解决问题:

%.o: %.cpp Makefile
    g++ -Wall -Wextra -MMD -MP -O2 -c -o $@ $<
%.o:%.cpp生成文件
g++-Wall-Wextra-MMD-MP-O2-c-o$@$<

实际上可以使用内置规则,方法是在规则之前定义
cppfags
和/或
cxflags
变量,因为如果运行
make-np
,您将看到内置规则定义了类似
${COMPILE.cc}-c-o$@$
%.o: %.cpp Makefile
    g++ -Wall -Wextra -MMD -MP -O2 -c -o $@ $<