理解Makefile中的隐含规则与变量

需积分: 50 401 下载量 36 浏览量 更新于2024-08-10 收藏 964KB PDF 举报
"《隐含规则使用的变量-算法引论:一种创造性方法》高清版,由陈皓编著,祝冬华整理。本书探讨了如何使用Makefile进行程序的编译和链接,详细介绍了Makefile的规则、变量、自动推导、规则书写以及命令和变量的高级用法。" 在Makefile编程中,隐含规则是预设的一系列构建步骤,它们利用了一系列内置的变量。这些变量可以在Makefile内部被重新定义,也可以通过命令行参数或环境变量来设定,影响隐含规则的执行。例如,`$(CC)`是用于指定C编译器的变量,默认为`cc`,但可以更改为`gcc`,而`$(CFLAGS)`则包含编译时的选项,如`-g`用于开启调试信息。 Makefile中关于命令的变量有: 1. `AR`: 它定义了创建函数库的程序,默认为`ar`,用于创建静态库。 2. `AS`: 指定汇编器,默认为`as`,用于将汇编语言源代码转换为机器代码。 除了命令相关的变量,还有参数相关的变量,例如`CFLAGS`,它包含了传递给编译器的额外选项。这些变量使得Makefile具有高度可配置性和灵活性,可以根据项目需求调整编译和链接过程。 书中详细讲解了Makefile的各个方面: - 显式规则和隐晦规则:显式规则直接定义了目标及其依赖,而隐晦规则是预设的,无需显式声明,比如C程序的编译规则。 - 变量的定义和使用:变量可以存储常量或动态值,提高代码复用性。 - 自动推导:make能够自动推导某些源文件和目标文件之间的依赖关系。 - 规则的编写:包括通配符的使用、文件搜寻、多目标规则、静态模式规则等。 - 命令的处理:如何控制命令的显示、执行、错误处理,以及嵌套的make调用。 - 追加变量值、override指示符和多行变量等高级变量用法。 - 条件判断和函数的使用:使Makefile具备一定的逻辑判断能力,并提供多种字符串和文件操作功能。 《跟我一起写Makefile》这本书通过丰富的例子和详细的解释,帮助读者深入理解Makefile的编写和管理,是学习Makefile不可多得的参考资料。