neu*_*cer 15 c makefile batch-file
我知道批处理文件的所有内容并且之前已经完成了,但是我不清楚makefile是什么.它看起来像一个批处理文件.有什么相似之处和差异?
Dig*_*oss 15
如果你什么都不做,只是把shell命令放在Makefile中,那么它实际上很像"批处理文件"的目录,并且当指定了相关的命名目标时它会执行每个命令.
然而,这是比较典型的指定的图形依赖于一个makefile,在这种情况下,让做了拓扑排序所有的相关性,以巧妙地创造一切只有一次,以正确的顺序开始最早的先决条件.
要完成,我应该补充一点,make也是一个宏处理器.它面向软件构建系统,因此它在其问题域中提供符号元素的句柄,例如源和目标的名称.
现在,make并不是一个专门的通用专家系统,1但它确实不仅仅是打包shellcode,从技术上讲它确实适合专家系统定义.
Make包含一个推理引擎.make的所有版本都有后缀规则,某些版本也实现了模式规则.当结合您的规范(更多规则,通常是定义软件应用程序的规则)时,结果是一个专家系统,它将决定在eBay上需要编译,链接,购买的内容,这些都取决于您提供的数据和命令.
wal*_*lyk 13
不可以.mamp文件具有特殊规则,这些规则涉及文件彼此依赖的方式.它不一定按照写入的顺序执行.
批处理文件是一系列命令和控制语句.
Makefile通常包含与批处理文件相同的内容,但批处理文件没有直接指示依赖关系的方法,也没有提供将一种文件处理成另一种文件的推断方法.
小智 6
Makefile列出了执行的命令,但它们的结构与顺序命令列表不同.相反,他们有目标和命令来"制造"它们. make然后检查列出的依赖项,并查看需要更新的目标,以实现您告诉它的内容.有许多隐式规则(假定*.c文件已经知道如何将其编译为*.o甚至构建可执行文件!)和标准变量(例如CFLAGS),因此您可以利用它来获得优势.并且,与手册页相反,您可以使用这些隐式规则而无需使用Makefile.
考虑一下最简单的方法是makefile文件说,如何做一个"A"给予"B",然后你告诉做什么你想做的事(例如make all),而不是如何去做.它计算出各个步骤.
一点也不。它们的相似之处在于所有编程语言都相似(更是如此,因为它们都是脚本),但它们的目的却截然不同。
makefile的目的是描述如何构建项目。这通常意味着创建规则(以特殊语言),内容如下:
当然,这是一个简单的描述。
使用 make(makefile 语言的“解释器”)的主要好处是您可以获得专为此类事物构建的语法。例如,make 通常会处理诸如检查文件是否已更改之类的事情,这样您就不会编译没有任何更改的文件。