如何使用make命令查看Makefile中指定任务的内容?
问题
现有如下Makefile文件(原文文件名拼写为Makedile):
$ cat Makedile job1: echo 33 echo 22 echo 11 job2: echo Hello
需要一条make相关命令,通过任务名称(比如job1)查看该任务对应的完整定义内容,期望输出如下:
$ make xxx job1 job1: echo 33 echo 22 echo 11 $
解决方案
可以结合make -p参数和awk命令来精准提取目标任务的定义:
make -p | awk '/^job1:$/ {flag=1; print; next} flag && /^\t/ {print; next} flag {exit}'
说明
make -p:输出Makefile中所有规则、变量的完整信息awk逻辑:- 匹配到
job1:开头的行时,开启标记并打印该行 - 标记开启状态下,打印所有以制表符开头的命令行(Makefile命令行要求以制表符开头)
- 遇到非制表符开头的行时退出,避免输出无关内容
- 匹配到
要查看其他任务,只需把命令里的job1换成对应任务名即可。
内容的提问来源于stack exchange,提问作者user3313834
相关产品推荐
相关产品推荐

