当指定为多个规则的依赖项时重新执行目标

发布于 2024-07-29 06:55:38 字数 431 浏览 3 评论 0原文

我有以下 GNU makefile:

.PHONY a b c d

a: b c
b: d
c: d
d:
    echo HI

我希望目标 'd' 运行两次——因为它被 b & 指定为依赖项。 C。 不幸的是,目标“d”只会执行一次。 运行 make 的输出将只是“HI”,而不是“HI HI”。

我怎样才能解决这个问题?

谢谢!

澄清一下,目标是这样的:

subdirs =  a b c

build: x y

x: target=build
x: $(subdirs)

y: target=prepare
y: $(subdirs)

$(subdirs):
    $(make) -f $@/makefile $(target)

I have the following GNU makefile:

.PHONY a b c d

a: b c
b: d
c: d
d:
    echo HI

I would like the target 'd' to be run twice -- since it is specified as a dependency by both b & c. Unfortunately, the target 'd' will be executed only once. The output of running make will simply be 'HI', instead of 'HI HI'.

How can I fix this?

Thanks!

To Clarify, the goal is something like this:

subdirs =  a b c

build: x y

x: target=build
x: $(subdirs)

y: target=prepare
y: $(subdirs)

$(subdirs):
    $(make) -f $@/makefile $(target)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千年*琉璃梦 2024-08-05 06:55:38
build: x y

x: target=build
y: target=prepare

x y: 
    echo hi $(target) $@
    touch $@

另请参见GNU Makefile规则从单个源文件生成一些目标,因为它是与此相反的问题的答案。

build: x y

x: target=build
y: target=prepare

x y: 
    echo hi $(target) $@
    touch $@

See also GNU Makefile rule generating a few targets from a single source file as it is an answer to a problem that is the opposite of this one.

柒七 2024-08-05 06:55:38

你是否正在尝试做这样的事情:

.PHONY: a b c

define print-hi
@echo HI
endef

a: b c
b:
    $(print-hi)
c:
    $(print-hi)

Are you trying to do something like this:

.PHONY: a b c

define print-hi
@echo HI
endef

a: b c
b:
    $(print-hi)
c:
    $(print-hi)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文