如果你想在 Makefile 的每个规则执行时打印出当前的行号,你可以使用 Makefile 的特殊变量 $(MAKEFILE_LIST)
和 $(CURDIR)
,以及 shell 命令 wc -l
来计算行号。但请注意,这只会打印出 Makefile 中规则的行号,而不是源代码的行号。这种做法主要用于调试 Makefile 本身。
例如:
all:
@echo "Current Makefile line number: $$(grep -nE '^\s*all\s*:' $(MAKEFILE_LIST) | cut -d : -f 1)"
gcc -o myprogram myprogram.c
在上面的 Makefile 片段中,grep -nE '^\s*all\s*:' $(MAKEFILE_LIST)
会搜索 Makefile 中定义 all
规则的行号:
请记住,Makefile 中的每个规则的命令都是在独立的 shell 实例中运行的,所以如果你想要跟踪每个规则执行时的行号,需要在每个规则中添加类似的命令。