GNU制作递归干式运行命令

发布于 2025-01-30 11:19:58 字数 614 浏览 3 评论 0原文

我有一个makefile,<代码>包括 s其他几个makefiles,并在许多地方使用递归制造。

我正在尝试将其目标打印到目标数据库(-p 不运行它们的情况下。这应该可以通过make -pn来实现,但是它不起作用。尽管传递了-n,这些配方仍在运行。

  • 我已经检查了很多次,每个文件中的每个文件的调用都是通过$(make)进行的,所以我希望这能起作用。

  • 删除-p没有区别,make-dry-run仍执行命令。

  • 该问题似乎会影响所有Make S,而不仅仅是子捕捞。

有什么我缺少的吗?我在Alpine上使用GNU 4.3。

我正在使用这些可能影响结果的特殊变量/目标:

.ONESHELL:
.SILENT:
SHELL = /bin/bash
.SHELLFLAGS = -o pipefail -exc

export MAKELEVEL

I have a makefile that includes several other makefiles and uses recursive make in numerous places.

I'm trying to have make print its database of targets (-p) without running them. This should simply be achievable with make -pn, however it isn't working. The recipes are being run despite -n being passed.

  • I've checked many times and every invocation of make inside every file is via $(MAKE), so I would expect this to work.

  • Removing -p makes no difference, make --dry-run still executes commands.

  • The issue appears to affect all makes, not just sub-makes.

Is there anything I'm missing? I'm on GNU Make 4.3 on Alpine.

I'm using these special variables/targets which may affect the outcome:

.ONESHELL:
.SILENT:
SHELL = /bin/bash
.SHELLFLAGS = -o pipefail -exc

export MAKELEVEL

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

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

发布评论

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

评论(1

懷念過去 2025-02-06 11:19:58

这是一个快速的示例,可以证明它可以按预期工作:

$ cat Makefile
all: ; $(MAKE) recurse

recurse: ; @echo hi

现在没有-n

$ make
make recurse
hi

我们可以看到配方已运行,并且Shell Echos Echos HI。现在,使用 -n运行

$ make -n
make recurse
echo hi

在这里它打印出运行的命令,但实际上没有运行。

无需将- $(makeflags)添加到子麦片调用中。

Here's a quick example to prove that it works as expected:

$ cat Makefile
all: ; $(MAKE) recurse

recurse: ; @echo hi

Now run without -n:

$ make
make recurse
hi

We can see the recipe was run and the shell echos hi. Now run with -n:

$ make -n
make recurse
echo hi

Here it prints the command to run, but doesn't actually run it.

No need to add -$(MAKEFLAGS) to the sub-make invocation.

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