Makefile 作为带有 shebang 的可执行脚本?

发布于 2024-11-30 13:57:28 字数 186 浏览 1 评论 0原文

是否可以创建一个可由 make 解释的可执行脚本?

我尝试了这个:

#!/usr/bin/env make --makefile=/dev/stdin

main:
        @echo Hello!

但它不起作用 - 挂起直到按 Ctrl-c

Is it possible to create an executable script that would be interpreted by make?

I tried this:

#!/usr/bin/env make --makefile=/dev/stdin

main:
        @echo Hello!

but it does not work - hangs until press Ctrl-c.

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

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

发布评论

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

评论(2

白芷 2024-12-07 13:57:28
#!/usr/bin/make -f

main:
        @echo Hello World!

通常是标准 make 文件中所需的全部内容。文件名作为最后一个参数隐式传递。 /dev/stdin 这里(通常)是 tty。如果有理由的话,您可以执行整个 env 操作,但通常没有必要。

ajw@rapunzel:~/code/videocc/tools > vi Makefile                       
ajw@rapunzel:~/code/videocc/tools > chmod a+x Makefile         
ajw@rapunzel:~/code/videocc/tools > ./Makefile                 
Hello World!
#!/usr/bin/make -f

main:
        @echo Hello World!

Is normally all you need in a standard make file. The filename is implicitly passed as the last argument. /dev/stdin here is (usually) the tty. You can do the whole env thing if there's a reason to, but often there's no need.

ajw@rapunzel:~/code/videocc/tools > vi Makefile                       
ajw@rapunzel:~/code/videocc/tools > chmod a+x Makefile         
ajw@rapunzel:~/code/videocc/tools > ./Makefile                 
Hello World!
淡莣 2024-12-07 13:57:28

以下内容增加了一定程度的间接性,但这是我为自执行 makefile(不称为“makefile”)提出的最佳解决方案:

#!/bin/sh
exec make -f- "$@" << 'eof'

.PHONY: all
all:
    @echo 'hello world!'

我正在尝试收集#!每种语言/程序的 env hack 此处

The following adds a level of indirection but it's the best solution I've come up with for self-executing makefiles not called "makefile":

#!/bin/sh
exec make -f- "$@" << 'eof'

.PHONY: all
all:
    @echo 'hello world!'

I'm trying to collect #! env hacks for each language / program here.

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