makefile与批处理文件基本相同吗?

neu*_*cer 15 c makefile batch-file

我知道批处理文件的所有内容并且之前已经完成了,但是我不清楚makefile是什么.它看起来像一个批处理文件.有什么相似之处和差异?

Dig*_*oss 15

类似,是的,除了依赖项,拓扑排序,宏处理和专家系统

如果你什么都不做,只是把shell命令放在Makefile中,那么它实际上很像"批处理文件"的目录,并且当指定了相关的命名目标时它会执行每个命令.

然而,这是比较典型的指定的图形依赖于一个makefile,在这种情况下,做了拓扑排序所有的相关性,以巧妙地创造一切只有一次,以正确的顺序开始最早的先决条件.

要完成,我应该补充一点,make也是一个宏处理器.它面向软件构建系统,因此它在其问题域中提供符号元素的句柄,例如源和目标的名称.

现在,make并不是一个专门的通用专家系统,1但它确实不仅仅是打包shellcode,从技术上讲它确实适合专家系统定义.

Make包含一个推理引擎.make的所有版本都有后缀规则,某些版本也实现了模式规则.当结合您的规范(更多规则,通常是定义软件应用程序的规则)时,结果是一个专家系统,它将决定在eBay上需要编译,链接,购买的内容,这些都取决于您提供的数据和命令.


这是一个易于使用的专家系统.天网可能不会出现在复杂的Makefile中的意外错字中.


wal*_*lyk 13

不可以.mamp文件具有特殊规则,这些规则涉及文件彼此依赖的方式.它不一定按照写入的顺序执行.

批处理文件是一系列命令和控制语句.

Makefile通常包含与批处理文件相同的内容,但批处理文件没有直接指示依赖关系的方法,也没有提供将一种文件处理成另一种文件的推断方法.


dmc*_*kee 7

对它进行相当抽象的旋转:

  • 批处理文件以命令式语言编写.
  • Makefile以声明性语言编写,用于文件处理(用于构建控制,通常用于构建控制).


小智 6

Makefile列出了执行的命令,但它们的结构与顺序命令列表不同.相反,他们有目标和命令来"制造"它们. make然后检查列出的依赖项,并查看需要更新的目标,以实现您告诉它的内容.有许多隐式规则(假定*.c文件已经知道如何将其编译为*.o甚至构建可执行文件!)和标准变量(例如CFLAGS),因此您可以利用它来获得优势.并且,与手册页相反,您可以使用这些隐式规则而无需使用Makefile.

考虑一下最简单的方法是makefile文件说,如何做一个"A"给予"B",然后你告诉做什么你想做的事(例如make all),而不是如何去做.它计算出各个步骤.


Eda*_*aor 5

一点也不。它们的相似之处在于所有编程语言都相似(更是如此,因为它们都是脚本),但它们的目的却截然不同。

makefile的目的是描述如何构建项目。这通常意味着创建规则(以特殊语言),内容如下:

  1. 每当您看到以 .c 结尾的文件时,请在其上运行程序“gcc”以将其编译为“.o”目标文件。
  2. 每当您有一堆“.o”时,将它们链接到“.exe”中。

当然,这是一个简单的描述。

使用 make(makefile 语言的“解释器”)的主要好处是您可以获得专为此类事物构建的语法。例如,make 通常会处理诸如检查文件是否已更改之类的事情,这样您就不会编译没有任何更改的文件。