如何在 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 不要期望此规则以默认方式运行。
我有一个带有 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 不要期望此规则以默认方式运行。