如何在 makefile 中包含 valgrind 的标志?

How to include flags for valgrind in a makefile?

我有一个带有 valgrind 目标的 makefile,如下所示:

# expects a file `test.keys` to exist; it can contain any numbers.
valgrind: $(PROG) test.keys
    valgrind ./$(PROG) < test.keys

如果我想包含诸如 --leak-check=full --show-leak-kinds=all 之类的 valgrind 标志,我应该把它们放在哪里?我是将它们放在 valgrind: 之后,还是只放在 ./$(PROG) 之前但 valgrind 之后的第二行?

提前致谢!

名称“valgrind”在您的规则中出现了两次,因为您使用它表示两种不同的含义:它是您要执行的分析工具的名称,它是 你的 makefile 规则, 是任意的。您也可以将规则命名为“pumpernickel”:

pumpernickel: $(PROG) test.keys
    valgrind ./$(PROG) < test.keys

这些标志将被传递给 valgrind(分析工具),就像您在命令行上调用它一样。这就是第二行;该行作为命令传递给 shell。这就是旗帜所在的地方。

P.S。无论您为该规则选择什么名称,请注意默认情况下 Make 期望具有给定名称的规则来构建具有该名称的文件。此规则不构建任何内容,因此您应该使用 .PHONY 警告 Make 不要期望此规则以默认方式运行。