首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将先决条件打印到目标

将先决条件打印到目标
EN

Stack Overflow用户
提问于 2016-01-27 16:22:58
回答 1查看 1.1K关注 0票数 1

这很容易复制这个问题,但我所看到的还没有得到回答。

我的目标是:能够将先决条件打印到目标。

我有某种解决办法,但对我来说就像是一次黑客攻击。

假设目标是all,并且它只有先决条件,在名为makefile-1的文件中

代码语言:javascript
复制
all: foo

all: bar baz

我可以使用另一个名为makefile-2的makefile

代码语言:javascript
复制
all:
ifeq ($(SHOW),yes)
    echo $^
else
    cat $^
endif

当适当地调用时,这种类型给了我需要的东西:

代码语言:javascript
复制
$ make -f makefile-1 -f makefile-2
cat foo bar baz
$ make -s SHOW=yes -f makefile-1 -f makefile-2
foo bar baz

但是我不知道如果前提条件在原始makefile中有一个菜谱,或者是否有一个更好/更干净的方法,我不知道该怎么办。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 05:19:46

在不构建目标的情况下向目标显示先决条件的一种更简单的方法可能是将-p选项(如建议的这里)和-q选项一起使用,就像GNU制作手册页上建议的那样(选项的长名称是--print-data-base):

代码语言:javascript
复制
make -qp | grep '^all:'

这将打印数据库,并只选择具有目标all及其先决条件的行。如果有关于该目标的规则,则该规则将位于同一段落的末尾(如果我正确理解输出的格式)。

如果使用多个makefile,可以使用-f选项指定所有这些文件:

代码语言:javascript
复制
make -f makefile-1 -f makefile-2 -qp

当然,这将从所有makefile收集相同目标的先决条件,但目标不能有多个文件中指定的规则。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35042669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档