找到 Makefile 模式规则,但没有找到配方 运行

Makefile Pattern Rule is found but recipe does not run

我的 makefile 具有以下模式规则来创建隐式规则:

%.cpp:
    $(warning foo)

当我检查 make -d 的输出时,我看到这个隐式规则正在被发现并匹配一个文件。我确认当我删除模式规则时,make -d 的输出不再显示匹配项。但是,即使找到隐式规则,也不会显示警告。 食谱不是 运行,即使隐式规则匹配

什么给了?

该食谱告诉 make 如何创建 一个 %.cpp 文件(并且不给它任何先决条件)。

您预计什么时候会 运行?

它不会 运行 任何现有的 *.cpp 文件,因为缺少先决条件意味着 make 认为文件是最新的。

试试 运行ning make totally-doesnt-exist.cpp 你应该会看到警告。