已找到Makefile模式规则,但配方未运行

已找到Makefile模式规则,但配方未运行,makefile,g++,Makefile,G++,我有一个makefile,它具有以下模式规则来创建隐式规则: %.cpp: $(warning foo) 当我检查make-d的输出时,我看到这个隐式规则正在被找到并匹配一个文件。我验证在删除模式规则时,make-d的输出不再显示匹配项。但是,即使找到隐式规则,警告也不会显示配方未运行,即使隐式规则匹配 提供了什么?该配方告诉make如何创建%.cpp文件(并且不提供任何先决条件) 您希望它什么时候运行 它不会对任何现有的*.cpp文件运行,因为缺少先决条件意味着make会将文件视为最

我有一个makefile,它具有以下模式规则来创建隐式规则:

%.cpp:
    $(warning foo)
当我检查
make-d
的输出时,我看到这个隐式规则正在被找到并匹配一个文件。我验证在删除模式规则时,
make-d
的输出不再显示匹配项。但是,即使找到隐式规则,警告也不会显示配方未运行,即使隐式规则匹配


提供了什么?

该配方告诉make如何创建
%.cpp
文件(并且不提供任何先决条件)

您希望它什么时候运行

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


尝试运行
使完全不存在。cpp
您应该会看到警告。

您的实际目标是什么?我的目标是为用作先决条件的所有.cpp文件指定一个运行方法。是否要使规则即使对存在的
.cpp
文件也运行?然后,您需要说服它这样做,即使它们是最新的。看,是的,你很好地阐明了我认为我错在哪里。我想,我对依赖性的看法有点倒退。我试图指定给定某个目标要做什么,但实际上,除非先决条件更新(没有),否则它不会被执行。我应该关注输出.o文件,而不是源.cpp文件。对,make操作基于输出目标,而不是输入文件。输入用于在不同的匹配规则之间进行选择,并创建规则链等。