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

时间:2008-09-19 13:53:14

标签: makefile compilation

一位系统管理员老师告诉我,有一天我应该学习使用“make”,因为我可以将它用于许多其他只会引发恭维的事情。

我再也没有机会谈论它。你有什么好的例子吗?

作为奖励,是不是这个工具被弃用了,什么是现代替代品(用于编译目的和其他)?

8 个答案:

答案 0 :(得分:4)

除了编译之外,还有一个优秀的make可以用于LaTeX。如果您正在使用LaTeX进行任何认真的工作,您会发现make非常方便,因为在使用BibTex或目录时需要多次重新解释.tex文件。

Make绝对不会弃用。虽然有不同的方法做同样的事情(Windows上的批处理文件,Linux上的shell脚本)使得工作最好,恕我直言。

答案 1 :(得分:1)

  

不推荐使用此工具

什么?不,甚至不是轻微的。我在Linux上,所以我意识到我不是普通人,但我几乎每天都在使用它。我确信每天都有成千上万的Linux开发者使用它。

答案 2 :(得分:1)

Make可用于执行您要执行的任何命令。它最适用于需要依赖性检查的活动,但没有理由不使用make来检查电子邮件,重新启动服务器,进行备份或其他任何操作。

Ant,NAnt和msbuild被认为是现代的替代品,但是普通的make仍然在不使用Java或.NET的环境中广泛使用。

答案 3 :(得分:1)

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

编辑:

Here's an article from IBM解释原则。

答案 4 :(得分:1)

Make执行一个topological sort,也就是说给定了一堆东西,并且一组要求在另一件事之前有一件事,它找到了一种方法来订购所有的东西,以便所有的东西满足要求。构建东西(程序,文档,分发tarball等)是拓扑排序的常用方法,但还有其他方法。您可以为数据中心的每个服务器创建一个包含一个条目的Makefile,包括服务器之间的依赖关系(NFS,NIS,DNS等),make可以告诉您停电后打开计算机的顺序,或者什么命令在断电之前关掉它们。您可以使用它来确定在单个服务器上启动服务的顺序。你可以用它来弄清楚早上穿衣服的顺序。任何问题,你需要找到满足形式A的一系列特定要求的一堆事物或任务的顺序,在B之前可以用make来解决这个问题。

答案 5 :(得分:0)

我见过的最随机的用法是在BCCD上使用bash作为init脚本。一旦你克服了wtf时刻,它实际上工作得很好....

将make视为添加了oomph的shell脚本。

答案 6 :(得分:0)

好吧,我确信UNIX工具“make”仍然被大量使用,即使它在.Net世界中逐渐消失。虽然现在有更多的人使用MSBUILD,Ant,nAnt和其他工具,但它们实际上只是使用不同的文件语法“make”。基本概念是一样的。

使用工具可以方便地处理输入文件并将其处理为输出文件。在MSWord中编写报告,但将其作为PDF分发? - 使用make生成PDF。

答案 7 :(得分:0)

配置文件通过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