" make"命令的其他用途是什么?

时间:2020-03-06 14:26:00  来源:igfitidea点击:

一位系统管理员老师有一天告诉我,我应该学习使用" make",因为我可以将其用于许多其他事情,这些事情只会触发复杂化。

我再也没有机会再谈论它了。你有什么好榜样吗?

另外,是否不推荐使用此工具,并且现代的替代品是什么(出于编译目的和其他目的)?

解决方案

我见过的最随机的用法是在BCCD上的初始化脚本中使用bash代替bash。一旦我们克服了wtf的瞬间,它实际上就可以正常工作了。

可以考虑将make作为添加了oomph的shell脚本。

isn't it this tool deprecated

什么?!不,甚至没有。我在Linux上,所以我意识到自己不是普通人,但是我几乎每天都在使用它。我敢肯定每天有成千上万的Linux开发人员在使用它。

除了编译外,可用于制作的一项出色的东西是LaTeX。如果我们要对LaTeX进行任何认真的工作,我们会发现它非常方便,因为在使用BibTex或者目录时需要多次重新解释.tex文件。

Make绝对不会被弃用。尽管执行相同操作的方式不同(恕我直言,Windows上的批处理文件,Linux上的shell脚本)使效果最佳。

Make可用于执行我们要执行的任何命令。最好将其用于需要进行依赖性检查的活动,但是没有理由我们无法使用make检查电子邮件,重新启动服务器,进行备份或者其他任何操作。

Ant,NAnt和msbuild可能是现代的替代品,但在不使用Java或者.NET的环境中,普通旧版本仍被广泛使用。

好吧,我确定即使在.Net世界中逐渐消失,UNIX工具" make"仍在被大量使用。而且,尽管如今越来越多的人正在使用MSBUILD,Ant,nAnt和其他工具,但实际上它们只是使用不同的文件语法来"制造"。基本概念是相同的。

对于将输入文件处理成输出文件的任何内容,make工具都很方便。用MSWord写报告,但以PDF形式分发吗? -使用make生成PDF。

如果需要,可通过crontab更改配置文件。

我有postfix映射和squid外部表的示例。

/ etc / postfix / Makefile的示例:

POSTMAP=/usr/sbin/postmap
POSTFIX=/usr/sbin/postfix

HASHES=transport access virtual canonical relocated annoying_senders
BTREES=clients_welcome

HASHES_DB=${HASHES:=.db}
BTREES_DB=${BTREES:=.db}

all: ${BTREES_DB} ${HASHES_DB} aliases.db
    echo \= Done

${HASHES_DB}: %.db: %
    echo . Rebuilding $< hash...
    ${POSTMAP} $<

${BTREES_DB}: %.db: %
    echo . Rebuilding $< btree...
    ${POSTMAP} $<

aliases.db: aliases
    echo . Rebuilding aliases...
    /usr/bin/newaliases

等等

我记得几年前在Slashdot上看到一篇文章,描述了一种使用make优化Linux启动顺序的技术。

编辑:

这是IBM的一篇文章,解释了该原理。

Make执行一种拓扑排序,也就是说,给定一堆东西,以及一个东西先于另一个东西的一组需求,它找到了一种对所有东西进行排序的方式,以便满足所有需求。生成事物(程序,文档,分发tarball等)是拓扑排序的一种常见用法,但还有其他用途。我们可以为数据中心中的每台服务器创建一个只有一个条目的Makefile,包括服务器之间的依赖关系(NFS,NIS,DNS等),并且make可以告诉我们断电后打开计算机的顺序,或者在停电之前关闭电源的顺序。我们可以使用它来确定在单个服务器上启动服务的顺序。我们可以使用它来找出早上要穿什么衣服。任何需要查找一堆满足A形式的特定要求的事物或者任务的订单的问题,在B之前都是可以通过make解决的。