如何使用make打印目标的所有先决条件和构建规则

时间:2012-12-05 15:48:30

标签: gnu-make

一个大项目通常有一个复杂的Makefile系统。有许多变量定义和目标先决条件依赖性分散在不同的Makefile中。是否有方便的方法来打印目标的所有先决条件和构建规则?

具体而言,有两个问题:

问题1

说我有四个Makefile:

Makefile1:

p: a b
    [some rule]

Makefile2:

q: c d
    [some rule]

Makefile3:

r: e f
    [some rule]

生成文件:

all: p q r
    [some rule]

我是否可以调用某些命令来获得类似于以下内容的输出?

all: a b c d e f
    [rule 1]
    [rule 2]
    [rule 3]
    ......

问题2

而且,如果我想检查的实体只是一个普通的二进制文件而不是Makefile中指定的目标呢?例如,如何在coreutils中获取sha1sum的先决条件和构建规则? (很明显,coreutils的Makefile中没有名为sha1sum的目标。)

我查看了make的帮助和手册,但是徒劳无功。也许我没有弄清楚谷歌搜索的正确关键字。谁能帮我?谢谢!

1 个答案:

答案 0 :(得分:1)

我对这个问题有点不清楚,但你尝试过-p选项吗?它打印通过解析makefile生成的DAG,并打印规则,依赖项和变量值

任何构建即使是复杂的构建都遵循构建目标的相同原则。从您的示例来看,不清楚的是如何构建依赖关系a和b。什么是最终目标。