【发布时间】:2012-07-30 23:49:30
【问题描述】:
我有一个 Makefile 规则,如下所示:
%.b : %.a
[run some commands...]
我想重写我的 Makefile,以便从 %.a 到 %.b 的所有转换都通过命令的一次执行来处理,而不是每个文件一次。
我尝试了以下方法:
%.b : someDummyFile
someDummyFile :
[run some commands]
问题是即使第一个规则没有请求创建 someDummyFile 的规则也会执行,从而导致不良行为。我猜没有依赖关系的规则会一直执行,即使它们的目标没有被其他规则使用?
我在这里错过了什么?
在尝试调试此问题时,我删除了对第二条规则的所有引用。例如,我将以下规则插入到现有的 Makefile 中,为什么即使没有其他规则引用它也会执行?
HELLOWORLD :
echo "# HELLO WORLD! THE NEXT LINE WILL TRIGGER AN ERROR"
DFASDA
【问题讨论】:
-
您所描述的似乎在这里工作正常;你能更详细地解释你的问题吗?
-
@CarlNorum:感谢您查看此内容。我的问题是,当我不希望它执行时,规则正在执行。请参阅我在上面附加的小示例。
-
如果一个规则没有被引用,它的配方永远不会被执行。您可以使用
make -d获取大量调试信息,以帮助您找出发生这种情况的原因。