主要是为了我的娱乐,我makefile
在我的$HOME/bin
目录中创建了一个名为rebuild.mk
,并使其可执行,文件的第一行读取:
#!/bin/make -f
#
# Comments on what the makefile is for
...
all: ${SCRIPTS} ${LINKS} ...
...
我现在可以输入:
rebuild.mk
这会导致make
执行。
除此以外,不永久利用此功能的原因是什么:
- makefile 绑定到单个目录,因此它确实不适合我的主
bin
目录。
有没有人见过以前被利用的把戏?
收集一些评论,并提供更多背景信息。
- Norman Ramsey 报告说这种技术被用于 Debian。这很有趣。谢谢你。
- 我同意输入“make”更习惯用语。
- 但是,这种情况(以前未说明)是我的 $HOME/bin 目录中已经有一个跨平台的主 makefile,它是目录中 500 多个命令的主要维护工具。
- 但是,在一台特定的机器上(仅),我想添加一个生成文件来构建一组特殊的工具。因此,这些工具得到了一个特殊的 makefile,我
rebuild.mk
为这个问题调用了它(它在我的机器上有另一个名字)。 - 我确实可以
make -f rebuild.mk
通过使用 'rebuild.mk
' 来节省键入 ' ' 的时间。 make
跨平台修复实用程序的位置是有问题的。- 该
#!/usr/bin/env make -f
技术可能会奏效,尽管我相信官方的交战规则是该行必须少于 32 个字符,并且命令可能只有一个参数。 - @dF 评论说该技术可能会阻止您传递要制作的参数。无论如何,这在我的 Solaris 机器上不是问题。我测试的三个不同版本的“make”(Sun、GNU、我的)都得到了我输入的额外命令行参数,包括选项(我的自制版本上的“-u”)和目标“someprogram”和宏 CC ='cc' WFLAGS=-v(使用不同的编译器并取消 Sun 编译器不理解的 GCC 警告标志)。
我不会提倡将其作为一种通用技术。
如前所述,这主要是为了我的消遣。我可以为这项特殊的工作保留它;我不太可能在分布式工作中使用它。如果我这样做了,我会提供并应用一个' fixin
'脚本来修复解释器的路径名;事实上,我已经在我的机器上这样做了。该脚本是 Camel 书第一版(Larry Wall 的“Programming Perl”)的遗物。