make 在开发过程中起着至关重要的作用。它结合了项目的组件来创建应用程序,同时允许开发人员避免因意外地省略构建步骤而引起的细微错误。但是,如果开发人员因为觉得 makefile 太慢而避免使用 make,那么 make 的所有好处就都失去了。因此,确保尽可能高效地 makefile 是很重要的。 性能问题总是很棘手,但是当考虑到用户的感知和代码的不同路径时,性能问题就更加棘手了。并不是 makefile 的每个目标都值得优化。根据您的环境,即使是激进的优化也可能不值得。例如,将手术时间从 90 分钟减少到

在本书中显示的 makefile 是工业强度相当适应您的最高级的需求。但是仍然值得看看一些来自现实项目的 makefile,看看人们在提供可交付成果的压力下用 make 做了什么。在这里,我们将详细讨论几个示例 makefile。第一个例子是构建这本书的 makefile。第二个是用于构建 Linux 2.6.7 内核的 makefile。 本书的 Makefile 写一本关于编程的书本身就是构建系统的有趣练习。本书的文本由许多文件组成,每个文件都需要不同的预处理步骤。这些示例是应该运行的真实程序,它们的输

调试 makefile 有点像一门魔法。不幸的是,没有 makefile 调试器这样的东西来检查特定规则是如何计算的或变量是如何展开的。相反,大多数调试都是通过简单的 print 语句和检查 makefile 来执行的。GNU make 通过各种内置函数和命令行选项提供了一些帮助。 调试 makefile 的最佳方法之一是添加调试钩子,并使用防御性编程技术,当事情出错时,您可以使用这些技术。我将介绍一些我认为最有帮助的基本调试技术和防御性编码实践。 make 的调试特性 warning 函数对于调试不规则的

GNU make有一组令人印象深刻的命令行选项。大多数命令行选项包括短格式和长格式。短命令以一个 - 后跟一个字符表示,而长命令以 -- 开头,通常后跟用 - 分隔的整个单词。这些命令的语法如下: -o argument --option-word=argument 以下是最常用的选项。要获得完整的清单,请参阅 GNU make 手册或键入 make --help。 –always-make -B 首先假设每个目标都过期了,然后更新所有目标。 –directory=directory -C direct

正如您已经看到的,GNU make 可以做一些非常不可思议的事情,但是我还没有看到太多用 eval 构造真正突破 make 3.80 极限的东西。在这个练习中,我们将看看是否能比平时走的更远。 数据结构 在编写复杂的 makefile 时,make的一个局限性是它缺乏数据结构。在一种非常有限的方式中,您可以通过定义带有内嵌周期(甚至 -> 如果你能忍受的话): file.path = /foo/bar file.type = unix file.host = oscar 如果按下,你甚至可以通过使用计算变

版本1.2,2002年11月 版权所有©2000,2001,2002自由软件基金会 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 每个人都被允许复制和分发本许可证文件的副本,但不允许更改它。 0. 序言 本授权的目的是使手册、教科书或其他功能和有用的文档在自由的意义上“自由”:确保每个人复制和重新发布它的有效自由,无论是否修改它,无论是商业上还是非商业上。其次,本许可证为作者和出版商保留了一种获得其作品信誉的方式,而不被认为对他人所做的修