Shell 如何获取Makefile目标上的直接依赖项列表

Shell 如何获取Makefile目标上的直接依赖项列表,shell,makefile,Shell,Makefile,我正在做一个有点复杂的Makefile的项目 它有很多函数调用和字符串替换来获取对象和虚假目标的列表 我试图获得对目标的直接依赖,例如 FOO_VAR := abc def ghi test: \ foo \ bar \ $(FOO_VAR) \ whatever 我应该 foo bar abc def ghi whatever 即使这些目标有进一步的依赖关系 我跟着 使用make-qp | awk-F':'/^[a-zA-Z0-9][^$\/\t=]*:([^=].$)/{split(

我正在做一个有点复杂的Makefile的项目

它有很多函数调用和字符串替换来获取对象和虚假目标的列表

我试图获得对目标的直接依赖,例如

FOO_VAR := abc def ghi

test: \
foo \
bar \
$(FOO_VAR) \
whatever
我应该

foo
bar
abc
def
ghi
whatever
即使这些目标有进一步的依赖关系

我跟着

使用
make-qp | awk-F':'/^[a-zA-Z0-9][^$\/\t=]*:([^=].$)/{split($1,a,//);用于(a中的i)打印a[i]}


但是,它将返回所有目标,而不仅仅是直接依赖项。

是否
make-qp | grep“target:”
做你想做的事

或者可能是
make-qp | grep“target.*:”
(以防它不是该行的唯一/最后一个目标)


另请参阅的答案,以获得一个更高效(但更长且需要少量准备工作)的命令来运行该管道的生成位。

您想要单个目标或其整个先决条件链的直接先决条件(即其prereqs的prereqs等)?只需要单个目标的直接先决条件。